【问题标题】:Dapper Parameter replace not working for TopDapper 参数替换不适用于 Top
【发布时间】:2016-04-29 20:24:40
【问题描述】:

这是我的 sql

var maxLimit =100;
var sql = "Select Top @MaxLimit from Table WHere data =@Id"
conn.Query<Result>(sql, new  {
                Id = customerId,
                MaxLimit = maxLimit
            })

但是我得到一个系统错误

@MaxLimit 附近的语法不正确。

Dapper 是否无法对 Top 或 Fetch 等字段进行参数化?

【问题讨论】:

    标签: c# sql-server dapper


    【解决方案1】:

    在 SQL Server 中,除数字常量外的任何 top 表达式都需要放在括号中。

    SELECT TOP (@MaxLimit) FROM ...
    

    【讨论】:

    • 仅在 2005 年及更高版本中受支持。 (显示我的年龄)
    【解决方案2】:

    较新版本的 dapper 有 literal replacements,它们在这种情况下工作得很好:

    var sql = "Select Top {=MaxLimit} from Table WHere data = @Id";
    

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 2018-06-24
      • 2021-07-30
      • 2014-07-27
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      相关资源
      最近更新 更多