Dapper 参数替换不适用于 Top

Dapper Parameter replace not working for Top

这是我的sql

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

但是我收到系统错误

incorrect syntax near @MaxLimit.

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

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

SELECT TOP (@MaxLimit) FROM ...

较新版本的 dapper literal replacements 在这种情况下效果很好:

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