假设下表 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/