【发布时间】:2014-06-06 08:29:32
【问题描述】:
我正在使用类似于 DynamicLinq 的东西来允许实体框架结果按与属性名称对应的字符串进行排序。但是,似乎无论何时更改排序属性,都不会使用缓存的 SQL,而是生成一条新语句。我正在寻找的是一种让实体框架在它生成的 SQL 语句中为 ORDER BY 子句使用 SQL 参数的方法。
我能够通过 .Skip() 和 .Take() 方法克服类似的问题。所以对应的 SELECT TOP N 和 WHERE ROW_NUMBER > M 在 SQL 输出中被正确参数化了。
有什么方法可以让 SQL 输出使用类似以下的 ORDER BY 子句:
ORDER BY [Foo].[@p__linq__24]
从 SQL 的角度来看,这应该是可能的。
【问题讨论】:
-
如果我错了,请纠正我,但正如你所说,使用参数是不允许的。
-
你是怎么用
Skip和Take做到的? -
@BenAaronson 看这里:stackoverflow.com/questions/9201403/…
-
@hometoast 应该可以在 SQL 中使用 sp_executesql 和动态 SQL 语句来处理它,这正是 Entity Framework 的工作原理。
标签: .net entity-framework entity-framework-6