首页 > 后端开发 > C++ > 我如何在EF查询中有效地将与Where子句的相关实体纳入其中?

我如何在EF查询中有效地将与Where子句的相关实体纳入其中?

Linda Hamilton
发布: 2025-02-01 13:51:10
原创
930 人浏览过

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

优化EF查询:与Include

的过滤相关实体

>本文解决了在实体框架(EF)查询中使用AWhere子句有效检索相关实体的挑战。 目的是避免多次数据库旅行。

>

场景涉及两个实体:Bus>和PersonBus具有Person的集合导航属性。目的是要检索所有驾驶的公共汽车,只有那些醒着的乘客。

>常见的效率低下方法导致多个数据库调用。 一个更有效的解决方案涉及在查询中使用过滤的

子句,禁用懒惰的加载和显式加载相关的实体。Where

这是一个演示这种方法的示例:

1

2

3

4

5

6

7

8

9

10

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();

登录后复制
此代码首先在单个数据库查询中检索驾驶总线及其清醒乘客。

调用将结果实现在内存中,从而允许EF正确建立关系。 最后,仅选择AsEnumerable()对象并返回。Bus>

重要的考虑因素: 这种方法虽然在EF6中有效,但可能需要针对多对多关系和EF核心进行调整。 EF Core提供诸如全球查询过滤器之类的功能,可以为更复杂的方案提供替代解决方案。 有关这些高级技术的详细信息并处理多到多的关系,请参考原始资料。

以上是我如何在EF查询中有效地将与Where子句的相关实体纳入其中?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板