And*_*rei 10 .net c# linq entity-framework
我想知道,如果我Where(...)
一个接一个地使用多个方法,EntityFramework足够聪明,可以将它组合在一个结果查询中.比方说我有:
context.Items
.Where(item => item.Number > 0)
.Where(item => item.Number < 5)
.ToList();
Run Code Online (Sandbox Code Playgroud)
生成的SQL查询是否与我写的相同:
context.Items
.Where(item => item.Number > 0 && item.Number < 5)
.ToList();
Run Code Online (Sandbox Code Playgroud)
多个Where子句是否有任何幕后优化?
是的,有.执行此操作的不是实体框架.实际上,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();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2321 次 |
最近记录: |