首頁 >後端開發 >C++ >我如何在EF查詢中有效地將與Where子句的相關實體納入其中?

我如何在EF查詢中有效地將與Where子句的相關實體納入其中?

Linda Hamilton
Linda Hamilton原創
2025-02-01 13:51:10912瀏覽

How Can I Efficiently Include Related Entities with a Where Clause in an EF Query?

優化EF查詢:與Include

的過濾相關實體

>本文解決了在實體框架(EF)查詢中使用AWhere子句有效檢索相關實體的挑戰。 目的是避免多次數據庫旅行。

>

場景涉及兩個實體:Bus>和PersonBus具有Person的集合導航屬性。目的是要檢索所有駕駛的公共汽車,只有那些醒著的乘客。

>常見的效率低下方法導致多個數據庫調用。 一個更有效的解決方案涉及在查詢中使用過濾的

子句,禁用懶惰的加載和顯式加載相關的實體。 Where

這是一個演示這種方法的示例:

<code class="language-csharp">Context.Configuration.LazyLoadingEnabled = false;
var buses = Context.Busses.Where(b => b.IsDriving)
            .Select(b => new
            {
                Bus = b,
                AwakePassengers = b.Passengers.Where(p => p.Awake)
            })
            .AsEnumerable()
            .Select(x => x.Bus)
            .ToList();</code>
此代碼首先在單個數據庫查詢中檢索駕駛總線及其清醒乘客。

調用將結果實現在內存中,從而允許EF正確建立關係。 最後,僅選擇AsEnumerable()對象並返回。 Bus>

重要的考慮因素: 這種方法雖然在EF6中有效,但可能需要針對多對多關係和EF核心進行調整。 EF Core提供諸如全球查詢過濾器之類的功能,可以為更複雜的方案提供替代解決方案。 有關這些高級技術的詳細信息並處理多到多的關係,請參考原始資料。

以上是我如何在EF查詢中有效地將與Where子句的相關實體納入其中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn