Varias declaraciones SQL en una ida y vuelta usando Dapper.NET

.net c# dapper sql sql-server

Pregunta

Hay una buena característica en ADO.NET que le permite enviar múltiples instrucciones SQL a la base de datos en una ida y vuelta y recibir resultados para todas las declaraciones:

var command = new SqlCommand("SELECT count(*) FROM TableA; SELECT count(*) FROM TableB;", connection);

using(var reader = command.ExecuteReader())
{
    reader.Read();
    resultA = reader.GetInt32(0);
    reader.NextResult();
    reader.Read();
    resultB = reader.GetInt32(0);
}

¿Hay alguna característica similar en Dapper.NET?

Respuesta popular

Sí, la extensión Dapper QueryMultiple puede hacer eso:

string query = @"SELECT COUNT(*) FROM TABLEA;
                 SELECT COUNT(*) FROM TABLEB";
using (var multi = connection.QueryMultiple(query, null))
{
    int countA = multi.Read<int>().Single();
    int countB = multi.Read<int>().Single();
}     

Según Marc Gravell, esta es la forma ideal de ejecutar múltiples consultas en un solo lote.

Nota: El creador de Dapper Sam Saffron ha publicado una explicación detallada con un ejemplo de código sobre el uso de QueryMultiple para lograr esto.



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