Dapper 는 저장된 proc 호출 세트를 일괄 처리 할 수 있습니까? 문서에서 다중 결과를 지원하는 것을 볼 수 있지만 Dapper를 사용하여 여러 저장된 proc 호출을 실행할 수 있는지 확실하지 않습니다.
Dapper는 저장된 procs에 대한 일괄 처리 명령을 지원합니다.
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 });
어느 행이 삽입 될지.
#spInsert
가 결과 집합을 반환하면 QueryMultiple
을 사용하여 반복 할 3 개의 레코드 집합을 제공하는 일괄 처리를 실행할 수 있습니다.