Параметры Dapper заменены не для Top

Это мой sql

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

Но я получаю системную ошибку

неправильный синтаксис рядом с @MaxLimit.

Является ли Dapper неспособным параметризовать поля, такие как Top или Fetch?

Ответ 1

В SQL Server любое выражение top, отличное от числовой константы, должно быть в круглых скобках.

SELECT TOP (@MaxLimit) FROM ...

Ответ 2

Это также работает с более новыми версиями Dapper:

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