Kann Dapper eine Reihe von gespeicherten Proc-Aufrufen verarbeiten? Ich sehe, dass es mehrere Ergebnisse in der Dokumentation unterstützt, aber ich bin nicht sicher, ob Sie mehrere gespeicherte Proc-Aufrufe mit Dapper ausführen können.
Dapper unterstützt Batch-Befehle für gespeicherte Prozeduren:
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);
Der obige Code verwendet den IDbCommand dreimal mit dem Text #spInsert
. Dies macht Batch-Einsätze ein wenig effizienter.
Im Allgemeinen, wenn Sie sich Sorgen über perf auf dieser Ebene machen, würden Sie den Batch-Aufruf in eine Transaktion umbrechen.
Darüber hinaus unterstützt Dapper jeden Batch, für den Sie sich entscheiden, es zu senden:
connection.Execute(@"
exec #spInsert @i = @one
exec #spInsert @i = @two
exec #spInsert @i = @three",
new { one = 1, two = 2, three = 3 });
Das würde dazu führen, dass drei Zeilen eingefügt werden.
Wenn #spInsert
eine Ergebnismenge QueryMultiple
, können Sie mit QueryMultiple
den Stapel ausführen, der Ihnen 3 Datensätze zum Durchlaufen geben würde.