Được cấu hình với Trình phục vụ SQL Server: EF 6 kết thúc tốt đẹp mọi cuộc gọi thủ tục được lưu trữ duy nhất với BEGIN TRAN
và COMMIT TRAN
.EF6 kết thúc tốt đẹp mọi lệnh gọi thủ tục được lưu trữ trong giao dịch của riêng nó. Làm thế nào để ngăn chặn điều này?
Nó không phải là một thay đổi phá vỡ?
Có lẽ nó không chỉ là một thay đổi phá vỡ, nhưng làm cho bất kỳ logic giao dịch không thể trong SPs như chúng ta bao giờ có thể rollback giao dịch của chúng tôi trong thủ tục lưu trữ sử dụng ROLLBACK TRAN
(lưu ý: không có giao dịch lồng nhau trong SQL Server), vì vậy một rollback rollback để @@TRANCOUNT
không. Khi chúng tôi tham gia giao dịch vì EF 6 chúng tôi nhận được "Số giao dịch sau EXECUTE cho biết số câu lệnh BEGIN và COMMIT không khớp. Số đếm trước = 1, số đếm hiện tại = 0" lỗi SQL Server chuẩn.
Vui lòng không hỏi tôi tại sao tôi muốn gọi các thủ tục được lưu trữ. Tôi có hàng trăm, và tất cả đều sử dụng logic TRY ... COMMIT ... CATCH ROLLBACK
.
Bất kỳ ý tưởng nào về cách ngăn chặn EF 6 thực hiện việc này?
Điều gì về việc sử dụng ['UseTransaction'] (http://msdn.microsoft.com/en-us/library/system.data.entity.database.usetransaction (v = vs.113) .aspx) và bắt đầu của riêng mình? –
Điều gì về việc sử dụng ADO.Net trực tiếp nếu bạn muốn kiểm soát nhiều hơn? – Aron