2013-04-25 27 views
10

Tôi đang trải qua hành vi kỳ lạ này, nơi giao dịch được chỉ cam kết khi using thoát và không khi gọi scope.Complete();TransactionScope Complete() không cam kết giao dịch trước khi thoát tuyên bố SỬ DỤNG

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) 
     { 
     scope.Complete(); 
      // data still doesn't show in db 
     } 
     // now shows in db 

Làm thế nào để cam kết giao dịch trước khi thoát khỏi tuyên bố using?

+1

Giao dịch có thể cam kết là giao dịch duy nhất cung cấp các tùy chọn để cam kết hoặc khôi phục http://msdn.microsoft.com/en-us/library/system.transactions.committabletransaction.aspx – Sankara

Trả lời

10

từ documentation:

Các công việc thực tế của cam kết giữa các nguồn lực quản lý xảy ra tại End Using tuyên bố nếu đối tượng TransactionScope tạo ra giao dịch.

Vì vậy, có vẻ như bạn thực sự có thể cam kết giao dịch trước khi kết thúc câu lệnh sử dụng.

+1

Lý do chính là nó có thể được lồng vào bên trong của một phạm vi khác, vì vậy tất cả những gì bạn đang nói là "công việc của tôi ở đây có vẻ tốt" nhưng một thất bại sau này có thể vẫn muốn quay lại nếu nó là một phần của một hoạt động lớn hơn. –

Các vấn đề liên quan