使用Include
>子句优化ef Where
查询
>
使用EF的方法有效获取相关实体,同时使用A子句同时过滤这些相关实体可能很棘手。 幼稚的方法通常会导致多个数据库旅行和潜在的映射错误。Include
>
Where
1。 EF6解决方案(投影和修复):
> 对于实体框架6和更早版本,解决方法涉及禁用懒惰加载并使用投影仅选择必要的数据。 关系修复然后处理协会。
此方法获取其中
是true,只有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();
在每个总线上都是Buses
是true。 至关重要的是,关系修复可以重新建立IsDriving
及其过滤的Passengers
。Awake
之间的连接
Bus
Passengers
2。利用第三方库:
> 和
>的库提供了一种更清洁的方法。这些工具允许您定义自动适用于查询的全局过滤器,包括嵌套属性,简化语句中的过滤过程。
EntityFramework.DynamicFilters
EntityFramework.Filters
3。 EF核心注意事项:Include
>语句中的导航属性。 未来版本可能会增强此功能。
重要的考虑因素:
Include
懒惰加载:
LazyLoadingEnabled = false
第三方好处:以上是如何在相关实体中有效地使用``在哪里'''子句?的详细内容。更多信息请关注PHP中文网其他相关文章!