使用Include
>子句優化ef Where
查詢
>
使用EF的方法有效獲取相關實體,同時使用A子句同時過濾這些相關實體可能很棘手。 幼稚的方法通常會導致多個數據庫旅行和潛在的映射錯誤。 Include
>
Where
1。 EF6解決方案(投影和修復):
> 對於實體框架6和更早版本,解決方法涉及禁用懶惰加載並使用投影僅選擇必要的數據。 關係修復然後處理協會。
此方法獲取其中
是true,只有<code class="language-csharp">Context.Configuration.LazyLoadingEnabled = false; var buses = Context.Busses.Where(b => b.IsDriving) .Select(b => new { b, Passengers = b.Passengers.Where(p => p.Awake) }) .AsEnumerable() .Select(x => x.b) .ToList();</code>
在每個總線上都是Buses
是true。 至關重要的是,關係修復可以重新建立IsDriving
及其過濾的Passengers
。 Awake
之間的連接
Bus
Passengers
2。利用第三方庫:
> 和
>的庫提供了一種更清潔的方法。這些工具允許您定義自動適用於查詢的全局過濾器,包括嵌套屬性,簡化語句中的過濾過程。
EntityFramework.DynamicFilters
EntityFramework.Filters
3。 EF核心注意事項:Include
>語句中的導航屬性。 未來版本可能會增強此功能。
重要的考慮因素:
Include
懶惰加載:
LazyLoadingEnabled = false
第三方好處:以上是如何在相關實體中有效地使用``在哪裡'''子句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!