有没有办法在LINQ to SQL中强制生成查询的const内联?

Sed*_*glu 7 linq-to-entities linq-to-sql

LINQ to SQL始终将值转换为输出中的查询参数.例如:

someTable.Where(n => n.Field == 5);
Run Code Online (Sandbox Code Playgroud)

生产:

WHERE Field = @p0
Run Code Online (Sandbox Code Playgroud)

这会导致某些查询优化方案出现问题.有没有办法强制在生成的SQL中内联值,以便它变为:

WHERE Field = 5
Run Code Online (Sandbox Code Playgroud)

?LINQ to Entities会提供一种方式还是它的行为相同?

Sed*_*glu 2

正如实体框架团队的 Diego Vega 在 Twitter 上提到的

实际上,常量在 EF 中已永远翻译为内联常量。

所以看来 EF 是可行的方法,但有一个问题:

我们认为 EF7 应该进行更多参数化,因此我们需要了解这对您不利的情况

至少在这方面 EF6 比 LINQ to SQL 好得多,因此我们可以使用 EF。