首页 >后端开发 >C++ >我如何在实体框架中有效地检索公共汽车及其清醒的乘客?

我如何在实体框架中有效地检索公共汽车及其清醒的乘客?

Linda Hamilton
Linda Hamilton原创
2025-02-01 13:36:11511浏览

在实体框架中有效检索公共汽车和清醒的乘客

>

>本文以有效的方式使用实体框架(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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn