在使用SelectMany时,我似乎无法弄清楚如何让EF Core包含/加载相关对象。
context.MyObject
.Where(w => w.Id == Id)
.SelectMany(m => m.SubObject)
.Include(i => i.AnotherType)
会想到类似上面的内容会起作用,但是折叠的SubObject集合使AnotherObject为null并且不包括在内。
一直在寻找。
任何帮助都将不胜感激。
由于
答案 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)