Entity Framework Core 的 SelectMany 然后 Include。

7

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

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

本来以为像上面那样做就可以了,但是折叠的子对象集合中的AnotherObject为空并未包含在内。

已经搜寻了几个小时了。

任何帮助都将不胜感激。

谢谢

1个回答

7

我本以为像上面那样做会起作用

在EF6中它曾经起作用,但是目前EF Core不支持 - 它只允许你使用急加载查询开始的实体,如文档中所述加载相关数据 - 忽略包含部分:

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

因此,要使急加载在您的情况下起作用,查询应该像这样(假设您在SubObject中具有反向导航或FK属性):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接