实体框架核心SelectMany然后包括

时间:2017-06-13 10:46:11

标签: c# .net-core entity-framework-core

在使用SelectMany时,我似乎无法弄清楚如何让EF Core包含/加载相关对象。

context.MyObject
       .Where(w => w.Id == Id)
       .SelectMany(m => m.SubObject)
       .Include(i => i.AnotherType)

会想到类似上面的内容会起作用,但是折叠的SubObject集合使AnotherObject为null并且不包括在内。

一直在寻找。

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:7)

  

会想到类似上面的东西会起作用

它过去在EF6中工作,但目前EF Core不支持 - 它允许您仅使用查询开始的实体的热切加载,如Loading Related Data中所述 - 忽略包含文档部分:

  

如果更改查询以使其不再返回查询开头的实体类型的实例,则忽略包含运算符。

因此,要在您的方案中获得热切的加载工作,查询应该是这样的(假设您在SubObject中有反向导航或FK属性):

context.SubObject
       .Where(so => so.Object.Id == Id) // or so.ObjectId == Id
       .Include(i => i.AnotherType)