4
假设如下表MyObjects
:实体框架4:如何执行WHERE子句秩序生成的查询
Id (PK, int)
DecimalField (decimal)
TextField (nvarchar)
我已经把一个额外的指数DecimalField
。
考虑以下LINQ实体查询检索对象:
db.MyObjects.FirstOrDefault(r => r.DecimalField == localValue1 && r.TextField == localValue2)
因为索引的,重要的是,EF-生成的查询保持WHERE子句相同的属性的顺序(即DecimalField
第一个和TextField
秒),否则将发生表扫描并且索引是无用的。我如何强制EF在WHERE子句中保持特定顺序?特设查询和编译查询有什么不同?
很好的问题。 +1 – RPM1984 2011-01-19 10:24:24
KristoferA的回答是正确的。为了证明这一点,请在Management Studio中写入两个SQL查询,打开“实际执行计划”并运行查询。如果两个查询没有得到完全相同的计划,那么某处某处会出现问题。 – 2011-01-19 11:35:11