c# - Entity Framework 4 : How to enforce WHERE clause order in generated query

标签 c# sql-server entity-framework linq-to-entities

假设下表 MyObjects:

Id (PK, int)
DecimalField (decimal)
TextField (nvarchar)

我在 DecimalField 上添加了一个索引。

考虑以下用于检索对象的 LINQ to Entities 查询:

db.MyObjects.FirstOrDefault(r => r.DecimalField == localValue1 && r.TextField == localValue2)

由于索引的原因,EF 生成的查询必须保持 WHERE 子句中属性的顺序相同(即 DecimalField 第一,TextField 第二) ), 否则会进行表扫描,索引无用。如何强制 EF 在 WHERE 子句中保持特定顺序?即席查询和编译查询之间有区别吗?

最佳答案

不,where 子句谓词的顺序无关紧要。如果有索引,SQL Server 将使用适当的索引,即使您的 where 子句指定列的顺序与它们在索引中出现的顺序不同。

关于c# - Entity Framework 4 : How to enforce WHERE clause order in generated query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4734038/

相关文章:

c# - 带有本地 SQL Server CE DLL 的 Entity Framework 代码优先 "ADO.NET provider not found"

c# - 模块化网站设计,使用 ASP.NET MVC,我想要一个不那么单一的设计

c# - 动态检测基类类型对象中包装了哪个子类

c# - 如何在 C# 中将任意二进制数据输出为字符表示形式?

c# - 在 OO 语言中,您如何命名包含 Main 方法的类?

sql-server - SQL - WHERE 子句中的 AND 条件

sql-server - SQLServer : How To bind fixed values to Column?

sql - 无法获得正确的列数 SQL Server

c# - 为什么 C# 允许通过可选参数进行不明确的函数调用?

c# - 在多对多关系上隐藏连接实体