Không có quy tắc khó và nhanh chóng, nhưng tôi thấy một số lý do để kiểm soát các giao dịch từ cấp doanh nghiệp:
-
Truyền thông qua ranh giới lưu trữ dữ liệu. Các giao dịch không cần phải chống lại một RDBMS; chúng có thể chống lại nhiều thực thể.
-
Khả năng khôi phục / cam kết các giao dịch dựa trên logic nghiệp vụ có thể không có sẵn cho quy trình được lưu trữ cụ thể mà bạn đang gọi.
-
Khả năng gọi một tập hợp các truy vấn tùy ý trong một giao dịch duy nhất. Điều này cũng giúp bạn không phải lo lắng về số lượng giao dịch.
-
Sở thích cá nhân:c # có cấu trúc thanh lịch hơn để khai báo các giao dịch:a
using
khối. Để so sánh, tôi luôn thấy các giao dịch bên trong các thủ tục được lưu trữ trở nên phức tạp khi chuyển sang rollback / commit.
Điều này có thể có hoặc không có vấn đề tùy thuộc vào số lượng giao dịch đang được mở (không rõ đây là một công việc đơn lẻ hay một thủ tục được chạy với tính đồng thời cao). Tôi khuyên bạn nên xem những ổ khóa đang được đặt trên đồ vật nào và những ổ khóa đó được giữ trong bao lâu.
Hãy nhớ rằng xác thực có thể nên Khóa; điều gì sẽ xảy ra nếu dữ liệu thay đổi giữa thời điểm bạn xác thực nó và thời điểm hành động xảy ra?
Nếu nó là vấn đề, bạn có thể chia thủ tục vi phạm thành hai thủ tục và gọi một thủ tục từ bên ngoài TransactionScope
.