在實體框架中使用過濾有效地加載相關數據
>
>本文在實體框架內應用過濾條件時,應對熱切加載相關實體的挑戰。 最佳方法取決於您的EF版本。 >
實體框架6解決方案>>
>禁用懶惰加載:<code class="language-csharp">Context.Configuration.LazyLoadingEnabled = false;</code>
>
>帶過濾的投影:<code class="language-csharp">var buses = Context.Busses .Where(b => b.IsDriving) .Select(x => new { b, Passengers = x.Passengers.Where(p => p.Awake) }) .AsEnumerable() .Select(x => x.b) .ToList();</code>
Passengers
>自動關係修復:Bus
ef將自動填充每個
>數據傳輸對象(DTOS):
使用諸如AutomApper之類的映射工具將檢索到的數據轉換為DTO,以進行最佳數據傳輸。實體框架核心(5.0及以後)解決方案
> EF Core 5.0及更高版本直接支持嵌套的版本包含條款,簡化了該過程:
<code class="language-csharp">var buses = Context.Busses .Include(bus => bus.Passengers.Where(p => p.Awake)) .ToList();</code>
> >
的庫提供了一種更簡化的方法,用於管理適用於包含集合的全局過濾器。 這可以增強複雜場景的代碼可讀性和可維護性。
EntityFramework.DynamicFilters
>在實體框架中,急切地加載相關數據的最佳方法是在所使用的版本中取決於。 EF Core 5.0提供了簡單的解決方案。 對於EF6,必須進行涉及禁用懶惰加載和使用預測的解決方法。 第三方庫為改進的代碼組織和靈活性提供了替代方案。
以上是如何用實體框架中的Where子句熱切地加載相關的實體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!