通過過濾 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中文網其他相關文章!