Plusieurs instructions SQL en un seul tour à l'aide de Dapper.NET

.net c# dapper sql sql-server

Question

Il existe une fonctionnalité intéressante dans ADO.NET qui vous permet d’envoyer plusieurs instructions SQL à une base de données en une seule fois et de recevoir des résultats pour toutes les instructions:

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);
}

Existe-t-il une fonctionnalité similaire dans Dapper.NET?

Réponse populaire

Oui, l'extension Dapper QueryMultiple peut le faire:

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();
}     

Selon Marc Gravell, c'est le moyen idéal pour exécuter plusieurs requêtes en un seul lot.

Note: Sam Saffron, créateur de Dapper, a posté une explication détaillée avec un exemple de code sur l'utilisation de QueryMultiple pour accomplir cela.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi