首頁 > 後端開發 > C++ > 如何在實體框架核心中過濾包含的數據?

如何在實體框架核心中過濾包含的數據?

Mary-Kate Olsen
發布: 2025-01-31 03:01:09
原創
416 人瀏覽過

How Can I Filter Included Data in Entity Framework Core?

Entity Framework Core 中的過濾包含

在使用 Entity Framework Core 時,您可能會遇到需要根據特定屬性過濾包含表達式結果的情況。

工作原理

Entity Framework Core 5 引入了過濾包含功能,允許您在包含相關數據時指定 Where、OrderBy/OrderByDescending、ThenBy/ThenByDescending、Skip 和 Take 運算符。

示例

考慮以下代碼:

<code class="language-csharp">using (var context = new BloggingContext())
{
    var blogs = context.Blogs
        .Include(blog => blog.Posts.Where(p => p.Author == "me")) // 过滤包含
        .ToList();
}</code>
登入後複製

在這個例子中,我們過濾了 Include 語句的結果,只包含作者為“me”的帖子。這是通過將 Where 運算符應用於帖子集合來實現的。

注意事項

  • 每個導航屬性只能應用一個過濾器。
  • 一些操作會累積結果(例如,Include(c => c.Orders.Where(o => o.Name != "Foo")).Include(c => c.Orders.Where(o => o.Name == "Bar")) 將返回包含所有訂單的客戶)。
  • 過濾器必須使用可以獨立用於集合的謂詞(例如,o => o.Classification == c.Classification)。
  • 過濾包含不會影響主查詢(例如,Include(c => c.Orders.Where(o => o.IsDeleted)) 返回所有客戶,而不僅僅是那些具有未刪除訂單的客戶)。
  • 投影忽略包含,無論是過濾的還是未過濾的。
  • 但是,當實體投影包含可以應用過濾包含的屬性時,則會應用包含。

This revised response maintains the image and its original format, rephrases sentences for improved flow and clarity, and simplifies the code example for better readability while retaining the original meaning. The key change is making the Where clause part of the Include statement directly, which is more concise and efficient.

以上是如何在實體框架核心中過濾包含的數據?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板