Có thể Dapper lô một tập hợp các cuộc gọi proc đã lưu trữ không? Tôi thấy nó hỗ trợ nhiều kết quả trong tài liệu nhưng tôi không chắc liệu bạn có thể thực thi nhiều cuộc gọi proc được lưu trữ bằng Dapper hay không.Có thể Dapper lô một tập hợp các cuộc gọi proc đã lưu trữ không?
7
A
Trả lời
9
Dapper hỗ trợ các lệnh trạm trộn cho lưu trữ 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);
Đoạn mã trên reuses IDbCommand với văn bản #spInsert
, 3 lần. Điều này làm cho việc chèn hàng loạt hiệu quả hơn một chút.
Nói chung, nếu bạn lo lắng về mức độ hoàn hảo ở cấp độ này, bạn sẽ thực hiện cuộc gọi hàng loạt trong giao dịch.
hỗ trợ Ngoài ra Dapper bất cứ điều gì batch bạn quyết định gửi nó:
connection.Execute(@"
exeC#spInsert @i = @one
exeC#spInsert @i = @two
exeC#spInsert @i = @three",
new { one = 1, two = 2, three = 3 });
nào sẽ gây ra ba hàng được chèn vào.
Hơn nữa, nếu #spInsert
trả lại kết quả, bạn có thể sử dụng QueryMultiple
để thực hiện lô sẽ cung cấp cho bạn 3 bộ bản ghi để lặp qua.
Các vấn đề liên quan
- 1. Thủ tục lưu trữ không đồng bộ Các cuộc gọi
- 2. Có thể kết hợp các cuộc gọi trong WCF không?
- 3. Làm cách nào để kết hợp các tập hợp kết quả từ hai cuộc gọi thủ tục được lưu trữ?
- 4. Thực thi một Proc Oracle lưu trữ như Một tài
- 5. Cuộc gọi thủ tục đã lưu với ISNULL trong nhiệm vụ. Cú pháp không hợp lệ?
- 6. Máy chủ SQL có thể lưu trữ proc xác định tên của cha mẹ mình không?
- 7. Chèn Cập nhật được lưu trữ proc trên SQL Server
- 8. EF có lưu trữ các thực thể giữa các trường hợp khác nhau của DbContext không?
- 9. Các thủ tục được lưu trữ có thể trả về một tập kết quả không?
- 10. Lưu grid.arrange() lô vào tập tin
- 11. Có thể lưu trữ một khối bên trong NSManagedObject không?
- 12. Một kho lưu trữ có nên gọi một kho lưu trữ khác không? Hoặc một kho lưu trữ nên gọi một lớp dịch vụ?
- 13. Tập hợp các phần tử nhóm đã cho có tập hợp các đại diện coset không?
- 14. proc lưu trữ cho tập kết quả khác với TSQL, chỉ có trên một số máy chủ
- 15. Kết hợp khung thực thể, Dapper và SSDT?
- 16. Tìm hiểu quy trình lưu trữ cuộc gọi trong SQL Server
- 17. Không thể lưu trữ các document_id
- 18. Gọi một Kho lưu trữ từ Kho lưu trữ
- 19. Có thể gọi Thủ tục lưu trữ bằng LINQ trong LINQPad không?
- 20. không có chức năng phù hợp cho cuộc gọi đến ''
- 21. Dapper có hỗ trợ các đối tượng được nhập mạnh mẽ với quy trình được lưu trữ không?
- 22. Có cách nào để tạo một biến bảng cục bộ bên trong một proc được lưu trữ trong Firebird không?
- 23. Tôi làm cách nào để tìm các cuộc gọi thủ tục được lưu trữ?
- 24. Tôi có cần gọi các cuộc gọi MessageBox không?
- 25. Tìm tất cả các cuộc gọi Thủ tục lưu trữ MySQL?
- 26. Tối ưu hóa một cuộc gọi chức năng lưu trữ trong điều khoản SELECT và ĐÂU
- 27. Điều này có phù hợp với định nghĩa của bạn về một cuộc gọi lại không?
- 28. Tôi có thể chia một kho lưu trữ Mercurial không?
- 29. Gọi thủ tục đã lưu trữ không có gì để trả về bằng Entity Framework
- 30. Có cách nào khác để lưu trữ các tham số để chúng có thể được sử dụng trong một cuộc gọi chức năng?
Sử dụng cách tiếp cận tương tự để gửi 19 cuộc gọi thủ tục dưới dạng một lô thay vì thực hiện chúng riêng lẻ, tôi đã cải thiện gấp 3 lần hiệu suất (141 so với 421 giây). Được sử dụng StringBuilder để chuẩn bị truy vấn và tên @param_i từ danh sách, trong đó tôi là chỉ mục. –