【发布时间】:2016-10-29 12:48:33
【问题描述】:
我正在将我的 .NET Framework (EF6) 代码转移到 ASP.NET Core (EF Core),我偶然发现了这个问题。下面是一些示例代码:
在 EF6 中,我使用 Include() 和 Select() 进行预加载:
return _context.Post
.Include(p => p.PostAuthor.Select(pa => pa.Author).Select(a => a.Interests))
PostAuthor 是一个联结表,还有一个联结表“AuthorInterest”,我不需要在 EF6 中涉及(选择直接进入 a.Interests)。
无论如何,我可以看到在 EF7 中这已被重新设计,这意味着我现在应该使用 ThenInclude() 进行嵌套查询。不过……
return _context.Post
.Include(p => p.PostAuthor)
.ThenInclude(pa => pa.Select(pa2 => pa2.Author))
...etc
上面的代码由于 Select() 语句而失败。 https://docs.efproject.net/en/latest/querying/related-data.html 上的文档似乎表明我不需要它,我可以立即访问 Author,但是在显示的最后一个 lambda 中我得到了一个 ICollection,所以我显然需要 Select()。我在查询中进一步浏览了多个联结表,但为简单起见,我们只关注第一个。
我该如何进行这项工作?
【问题讨论】:
标签: entity-framework asp.net-core asp.net-core-mvc entity-framework-core