首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityFramework多处

EntityFramework多处
EN

Stack Overflow用户
提问于 2016-06-14 20:24:50
回答 1查看 5.4K关注 0票数 11

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

代码语言:javascript
复制
context.Items
    .Where(item => item.Number > 0)
    .Where(item => item.Number < 5)
    .ToList();

生成的SQL查询是否与我编写的相同:

代码语言:javascript
复制
context.Items
    .Where(item => item.Number > 0 && item.Number < 5)
    .ToList();

是否有针对多个Where子句的幕后优化?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-14 20:30:57

是的,有。这样做的不是实体框架。实际上,SQL提供者工厂()的任务是为数据库编写查询。根据您使用的数据库,此代码将来自不同的来源。

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

在这个库中,或者类似于它的库中,通常使用递归访问者模式在已定义的Expression对象图中导航,以便生成尽可能高效的查询。

使用多个where子句非常容易检测和优化,这类库遇到麻烦的地方往往是嵌套的投影。

如果您使用

代码语言:javascript
复制
context.Items
.Where(item => item.Number > 0)
.Where(item => item.Number < 5)
.ToString();
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37821455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档