好吧,想象一下,我有EF 6.1.3和数据库第一个模型(存储在edmx文件中),其中包含一个名为Product的实体。 该实体有4列,例如:Id(int),Name {string),Code(string),Rank(int)。列按我所描述的顺序存储,您可以在模型浏览器中看到。 然后我写这样的查询:
var list = mycontext.Products
.Where(x => x.Id < 10)
.GroupBy(x => new { x.Code, x.Name })
.Select(x=> new { x.Key.Code, x.Key.Name, MaxRank = x.Max(z => z.Rank) })
.ToList();
如您所见,我在group by子句中使用了另一个列顺序(Code列,然后是Name列)。
但是在SQL查询中我有这样的查询文本:
....
GROUP BY
[Extent1].[Name]
, [Extent1].[Code]
....
group by子句中的列始终按照它们在edmx文件中的顺序排序。
它只是一个示例,但这种情况总是会破坏我的查询计划,导致sql开始使用错误的索引等。
有人知道我该如何解决这个问题?