首頁 > 後端開發 > C++ > 我如何在實體框架中有效地檢索公共汽車及其清醒的乘客?

我如何在實體框架中有效地檢索公共汽車及其清醒的乘客?

Linda Hamilton
發布: 2025-02-01 13:36:11
原創
508 人瀏覽過

在實體框架中有效檢索公共汽車和清醒的乘客

>

>本文以有效的方式使用實體框架(EF)檢索公共汽車及其清醒乘客的挑戰,從而最大程度地減少數據庫調用。 解決方案略有不同,取決於您的EF版本。

How Can I Efficiently Retrieve Buses and Their Awake Passengers in Entity Framework?
5:

ef core版本:

較舊的EF版本需要解決方法以實現所需的結果:>

  1. >禁用懶惰加載:關閉lazy Loading(),以防止訪問相關實體時不必要的數據庫命中。 Context.Configuration.LazyLoadingEnabled = false;

  2. 投影查詢:

    使用投影查詢僅選擇必要的數據:>

<code class="language-csharp">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的關係修復將自動將選定的
  1. 連接到內存中的各自的總線。 >

    使用AutoMapper(可選)AwakePassengers>映射:

    >使用AutoMapper(或類似的庫)將檢索到的數據映射到您的DTOS。
  2. 重要考慮因素(預先核心5):>

  3. 禁用懶惰加載會影響應用程序的其他部分。 考慮權衡。

多到多的關係可能需要在投影后的手動乘客分配。 >

ef core 5及以後:
    > EF Core 5和更高版本的版本使用
  • >:
  • >提供更優雅的解決方案
  • 這個單個查詢有效地檢索了公共汽車,只有其醒著的乘客,從而消除了對早期版本的解決方法的需求。 然後可以使用自動應用程序直接映射到DTO。 EF Core 5中這種改進的方法為檢索相關實體提供過濾提供了一種更清潔,更有效的方法,從而大大簡化了該過程。

以上是我如何在實體框架中有效地檢索公共汽車及其清醒的乘客?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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