通过过滤 Include,您可以在查询期间缩小导航属性返回的数据范围。当您需要根据包含实体的属性进行过滤时,这尤其有用。
考虑以下代码:
<code class="language-csharp">using (var context = new BloggingContext()) { var blogs = context.Blogs .Include(blog => blog.Posts) .ThenInclude(post => post.Author) .ToList(); }</code>
此代码包含每个博客的所有帖子和作者。要根据作者姓名过滤结果,可以使用 Where 操作:
<code class="language-csharp">using (var context = new BloggingContext()) { var blogs = context.Blogs .Include(blog => blog.Posts) .ThenInclude(post => post.Author) .Where(blog => blog.Posts.Any(p => p.Author == "me")) // 修正后的Where条件 .ToList(); }</code>
EF Core 5 支持以下用于过滤 Include 的操作:
过滤 Include 不会影响主查询返回的项目数量。要过滤主查询结果,请使用单独的 Where 操作以及 Include。
投影通常会忽略 Include,无论它们是否已过滤。但是,如果投影中的实体可以包含,则 Include 将应用于它。 (注意:原文中对投影和过滤Include的描述过于简略,此处补充说明更清晰。)
以上是如何通过EF Core中的导航属性返回的数据包含?的详细内容。更多信息请关注PHP中文网其他相关文章!