gpt4 book ai didi

c# - EntityFramework 多个 Where

转载 作者:可可西里 更新时间:2023-11-01 09:11:37 25 4
gpt4 key购买 nike

我想知道,如果我一个接一个地使用多个 Where(...) 方法,EntityFramework 是否足够聪明,可以将它组合到结果查询中。假设我有:

context.Items
.Where(item => item.Number > 0)
.Where(item => item.Number < 5)
.ToList();

生成的 SQL 查询会不会和我写的一样:

context.Items
.Where(item => item.Number > 0 && item.Number < 5)
.ToList();

多个Where子句有没有后台优化?

最佳答案

是的,有。执行此操作的不是 Entity Framework 。编写数据库查询实际上是 SQL Provider Factory 的工作。根据您使用的数据库,此代码将来自不同的来源。

对于 MSSQL,代码是 Microsoft 的并且在库 System.Data.SqlClient 中。如果您查看 web.config 中的连接元素,您应该注意到属性“providerName”。

在该库或与其类似的库中,通常采用递归访问者模式来浏览定义的表达式树对象图,以便尽可能生成最高效的查询。

使用多个 where 子句很容易检测和优化,这类库有问题的地方往往是深度嵌套的投影。

如果你使用,你可以看到你的查询产生的SQL

context.Items
.Where(item => item.Number > 0)
.Where(item => item.Number < 5)
.ToString();

关于c# - EntityFramework 多个 Where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37821455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com