Dapper参数替换不适用于Top

时间:2016-04-29 20:24:40

标签: c# sql-server dapper

这是我的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等字段?

2 个答案:

答案 0 :(得分:27)

在SQL Server中,除数字常量之外的任何top表达式都必须在括号中。

SELECT TOP (@MaxLimit) FROM ...

答案 1 :(得分:2)

这也适用于较新的Dapper版本:

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