Dapper Query Return Error

asp.net-web-api2 dapper

Pregunta

Estoy trabajando en MVC Web API con Dapper versión 1.38.0.0. Escribo este código

 var param = new Dapper.DynamicParameters();
 foreach (Match match in Regex.Matches("Select Top @count * From tblCourse", @"(?<!\w)@\w+"))
 {
     string key = match.Value;
     string value = HttpContext.Current.Request.QueryString[key.Replace("@", null)];
     param.Add(key, value);
 }

 result = con.Query<dynamic>("Select Top @count * From tblCourse", param);

Pero tengo un error en la fila del resultado.

Additional information: Incorrect syntax near '@count'.

¿Como puedó resolver esté problema? Gracias.

Respuesta aceptada

TOP @param

No es legal en el servidor SQL. 2 opciones:

Select Top (@count) * From tblCourse

O

Select Top {=count} * From tblCourse

La primera es la forma en que SQL-server representa esto. El segundo es una característica específica de apunte que inyecta valores enteros (solo: no funciona para cadenas) directamente en la consulta. Si el valor suele ser el mismo, el segundo generalmente tendrá un mejor rendimiento. Por supuesto, con el segundo también necesitarías una expresión regular diferente.


Respuesta popular

Prueba esto

result = con.Query<dynamic>("Select Top (@count) * From tblCourse", param);

Top debe estar dentro del paréntesis cuando su valor se proporciona a través de un parámetro



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué