Siempre obteniendo la primera fila de la tabla cuando se usa dapper

dapper

Pregunta

Cuando uso dapper, sigo obteniendo la primera fila de la tabla aunque estoy tratando de pasar una identificación específica, pero sigo obteniendo la primera fila de la mesa. ¿Qué es lo que me estoy perdiendo? Revisé el generador de perfiles de SQL y descubrí que no se está enviando la identificación al procedimiento almacenado y que todos los datos están en proceso. Me cansé de muchas cosas, pero no sé por qué no se pasa la identificación.

public Setting GetConfigurationPerIdy(string id)
{
    return Run(conn => conn.Query<Setting>("spProc_GetSettingById",
        new {id}).FirstOrDefault());
}

Respuesta experta

Al igual que con ADO.NET regular, la suposición predeterminada es CommandType.CommandText ; si el comando que está ejecutando es un procedimiento almacenado, debe indicarlo :

..., new {id}, commandType: CommandType.StoredProcedure

De lo contrario, es funcionalmente idéntico a:

declare @id int = 7; -- or whatever
exec spProc_GetSettingById; -- note that we didn't add the parameter

Respuesta popular

Elimine FirstOrDefault () de su código, ya que devolverá solo la primera fila de la tabla, de lo contrario, será nulo por defecto.



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é