【发布时间】:2011-01-19 10:14:59
【问题描述】:
假设下表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 子句中保持一定的顺序?即席查询和编译查询之间有区别吗?
【问题讨论】:
-
KristoferA 的回答是正确的。为了向自己证明这一点,请在 Management Studio 中编写两个 SQL 查询,打开“实际执行计划”,然后运行查询。如果这两个查询没有得到完全相同的计划,那么某处就出现了严重问题。
标签: c# sql-server entity-framework linq-to-entities