Error al ejecutar un procedimiento almacenado que no arroja resultados

c# dapper stored-procedures

Pregunta

Actualmente estoy usando Dapper en uno de nuestros proyectos y ejecutamos procedimientos almacenados todo el tiempo. En los primeros pocos métodos todo funcionaba bien cuando el procedimiento almacenado que ejecutamos devuelve filas.

En este momento estoy enfrentando un problema cuando trato de obtener datos de un procedimiento almacenado que devuelve información cuando se encuentra. Este es un caso de uso muy común (por ejemplo, usuarios de registro en la aplicación). Al llamar al método Query , y sproc no devuelve ninguna fila, dapper arroja una ArgumentException con el mensaje:

"Al utilizar las API de mapeo múltiple, asegúrese de configurar el parametro splitOn si tiene claves que no sean Id Nombre del parámetro: splitOn"

El código que estoy usando es:

using (var conn = new SqlConnection(connString))
{
    conn.Open();

    return conn.Query<Customer>(
            sql: "prc_GetCustomer",
            param: new { Parameter = p },
            commandType: CommandType.StoredProcedure).FirstOrDefault();
}

Soy consciente de que hay un método Execute que se debe usar cuando se espera que el procedimiento no devuelva ninguna fila, pero realmente no es mi situación. Además, la excepción de dapper es engañosa, ya que no estoy usando el mapeo múltiple.

¿Algunas ideas? ¡Gracias!

Respuesta aceptada

Si la consulta no devuelve ninguna cuadrícula de resultados, debe usar Ejecutar, no consultar.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow