实体框架在一个请求中加载多个集合

时间:2017-01-23 19:18:18

标签: c# asp.net entity-framework linq

基本上我正在寻找在一个请求中获取实体的关联集合的最简单方法。

using (var context = new DbContext())
 {
   context.Users.Attach(user);
   context.Entry(user)
   .Collection(f => f.Followers)
   .Query()
   .Where(x => x.Whatever)
   //.Collection(r => r.Requests) doesn't work
   //.Collection(b => b.Blocks) doesn't work
   .Load();
 }

我知道我可以将它们分成3个不同的请求,但我只想要一次访问数据库。

或者我能够解决这个问题:

var user = context.Users
           .Include(f => f.Followers)
           .Include(r => r.Requests)

上述方法的问题是我无法使用.Where子句过滤include中的集合。

这个问题非常多: EF 6 filtering child collections

以及: Entity Framework Query multiple collections

其中任何一个都无法通过一个请求撤消,所以我猜它不可能?

1 个答案:

答案 0 :(得分:0)

其基地的EF不支持。

您可以将其拆分为3个单独的查询,并使用一些外部库在单个往返中执行此操作,例如 EntityFramework.Extended nuget库的 Future Queries 。 / p>