Tôi đang mã hóa để đọc các tệp xml để cập nhật cơ sở dữ liệu. Tôi nhận được khoảng 500 tệp xml và tôi muốn xử lý chúng nhanh nhất có thể.Có thể thực hiện nhiều thủ tục được lưu trữ trong một thao tác đơn lẻ không?
Tất cả các thao tác cơ sở dữ liệu được thực hiện bằng quy trình được lưu trữ.
Có khoảng 35 thủ tục được lưu trữ khác nhau được gọi cho mỗi tệp xml.
Ban đầu tôi đã viết đoạn code như thế này
var cmd = new SqlCommand("EXEC UpdateTeamStats("+teamId+","+points+")");
cmd.CommandType = CommandType.Text;
nhưng sau khi trải qua một số thông lệ tốt nhất mà tôi đã thay đổi nó để
var cmd = new SqlCommand("UpdateTeamStats");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("teamId", 21);
cmd.Parameters.Add("points", 2);
vì số lượng lớn các thủ tục lưu trữ được gọi từ chương trình Tôi nhận ra rằng tôi phải thực hiện số cuộc gọi ít hơn để tối ưu hóa.
Vì vậy, tôi muốn thu thập tất cả 35 thủ tục được lưu trữ cùng nhau và thực hiện chúng trong một lần.
Các thủ tục được lưu trữ khác với các tham số khác nhau và tôi không biết cách thu thập và thực thi chúng cùng nhau sau khi thay đổi tham số tôi đã làm ở trên.
Tôi đã nghĩ đến việc gọi một thủ tục lưu trữ khổng lồ và bên trong thủ tục lưu trữ gọi 35 khác, nhưng tôi không giỏi SQL và nó sẽ dẫn đến sự phức tạp không cần thiết.
Có thể thực hiện điều này hoàn toàn trong C# không?
Hoặc là có một số phương pháp khác tốt hơn để xếp hàng lên storedprocedures và chạy chúng một cách nhanh chóng
gì làm bạn mong đợi xảy ra khi ở giữa việc thực hiện của bạn, một lỗi đã xảy ra? Tất cả các thủ tục thực hiện rollback? Hoặc chỉ cần tiếp tục xử lý các thủ tục còn lại? –
Lưu ý rằng tiêu đề của bạn nói "song song" nhưng đọc câu hỏi của bạn, có vẻ như bạn chỉ có nghĩa là "một lệnh cơ sở dữ liệu" –
@GeorgeDuckett - Đó là chỉnh sửa của tôi. Bản gốc là "trong một lần". – Oded