stored net framework c# sql .net sql-server dapper

c# - net - dapper vs entity framework



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

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?


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.


var grid = connection.QueryMultiple(" SELECT COUNT(*) FROM TABLEA SELECT COUNT(*) FROM TABLEB SELECT COUNT(*) FROM TABLEC"); var lstResult = new List<int>(); var isNext = false; do{ var first2 = info.Read<int>().Single(); lstResult.Add(first2); isNext=info.IsConsumed; } while (!isNext);