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 раза.Это делает пакетные вставки немного более эффективными.
В общем, если вы беспокоитесь о перфекте на этом уровне, вы должны заключить пакетный вызов в транзакцию.
Кроме того, Dapper поддерживает любой пакет, который вы решили отправить:1011 * Что может привести к вставке трех строк.
Более того, если #spInsert
вернул набор результатов, вы можете использовать QueryMultiple
для выполнения пакета, который даст вам 3 набора записей для итерации.