Dapper.NETを使用して1回の往復で複数のSQL文を実行

.net c# dapper sql sql-server

質問

ADO.NETには、複数のSQL文を1回の往復でデータベースに送信し、すべての文の結果を受け取ることができる優れた機能があります。

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

Dapper.NETにも同様の機能がありますか?

人気のある回答

はい、Dapper QueryMultiple拡張でこれを行うことができます:

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

Marc Gravellによると、これは単一のバッチで複数のクエリを実行する理想的な方法です。

注:大まかな作成者のSam Saffronは、これを達成するためにQueryMultipleを使用することについてのコードサンプル詳細な説明を掲載しています



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ