Jes*_*ing 5 sql-order-by dapper
使用dapper时,有没有理由不能以正确的顺序检索以下代码?
connection.Query<User>("SELECT id, name " +
"FROM user " +
"ORDER BY @sort @dir " +
"LIMIT @offset, @pageSize; ",
new {
sort = sortOrder, // sortOrder = "name"
dir = sortDirection, // sortDirection = "ASC"
offset = pageIndex * pageSize, // offset = 0
pageSize = pageSize // pageSize = 10
});
Run Code Online (Sandbox Code Playgroud)
它总是在不应用订购的情况下返回.
我可以直接将sortOrder和sortDirection放入字符串中
"SELECT id, name " +
"FROM user " +
"ORDER BY " + sortOrder + " " + sortDirection + " " +
"LIMIT @offset, @pageSize; "
Run Code Online (Sandbox Code Playgroud)
但我不确定这会如何影响dapper,因为我相信它有自己的查询计划缓存.
另外,有没有办法查看dapper生成的查询?
当然,通常数据库引擎不允许您参数化列名.例如:
var row = cnn.Query("select @bob as col from table", new {bob = "col"}).first();
// most likely returns "row.col == col"
Run Code Online (Sandbox Code Playgroud)
当你试图通过子句参数化时,我会建议你使用内联替换,前提是你可以保证你的转义,bobby表总是潜伏着.(或者你可以使用proc)
我不确定(MySQL?Oracle?)的分析器周围的情况,但你可以使用像MiniProfiler这样的工具来查看SQL.
它会影响缓存,但sortOrder和sortDirection只有少量的排列,因此影响很小.
| 归档时间: |
|
| 查看次数: |
3865 次 |
| 最近记录: |