Dapperは格納されたproc呼び出しのセットをバッチできますか?

.net c# dapper

質問

Dapperは格納されたproc呼び出しのセットをバッチできますか?私はそれがドキュメント内の複数の結果をサポートしているが、Dapperを使って複数のproc呼び出しを実行できるかどうかはわかりません。

受け入れられた回答

Dapperは、ストアドプロシージャのバッチコマンドをサポートしています:

connection.Execute("create table #t (i int)");
connection.Execute("create proc #spInsert @i int as insert #t values (@i)");
connection.Execute("#spInsert", new[] { new { i = 1 }, new {i = 2}, new {i = 3} }, 
    commandType: CommandType.StoredProcedure);

var nums = connection.Query<int>("select * from #t order by i").ToList();

nums[0].IsEqualTo(1);
nums[1].IsEqualTo(2);
nums[2].IsEqualTo(3);

上記のコードはIDbCommandを#spInsertテキストで3回再利用します。これにより、バッチインサートがより効率的になります。

一般に、このレベルのperfについて心配する場合は、バッチコールをトランザクションでラップします。

さらに、Dapperは送信するバッチをサポートしています:

connection.Execute(@"
    exec #spInsert @i = @one 
    exec #spInsert @i = @two 
    exec #spInsert @i = @three",
    new { one = 1, two = 2, three = 3 });

3つの行が挿入されます。

さらに、 #spInsertが結果セットを返した場合は、 QueryMultipleを使用してバッチを実行することができます。このバッチを実行すると、3つのレコードセットが反復処理されます。



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