是否可以使用.Include()方法,使其在Entity Framework 6和EF Core中均可使用?
我目前拥有可访问IQueryable<>
的命令处理程序,但不知道它的来源,而且根据上下文运行的情况可能会更改源。例如,在运行实际应用程序时使用Entity Framework 6,但在测试时(使用SQLite内存提供程序)使用EF Core。
using System.Data.Entity;
class DemoCommandHandler
{
public void Handle(IQueryable<Blog> blogsQueryable, DemoCommand command)
{
//Need to get the blog and all the posts here
var blogs = blogsQueryable.Include(b => b.Posts).Single(b => b.Id = command.BlogId);
//Do stuff with blog and posts
}
}
当使用Entity Framework时,上述方法可以正常工作,但是在运行EF Core时,.Include()
不能正常工作(请注意using System.Data.Entity
);
如果将using语句更改为using Microsoft.EntityFrameworkCore
,则在运行EF Core时它可以正常工作,但是在运行Entity Framework时不起作用。
是否有一种方法可以创建一个框架无关的.Include()
?或者至少支持EF Core和Entity Framework两者?