2009-10-28 26 views
10

Tôi đang sử dụng TransactionScope để gửi dữ liệu trong LINQ to SQL. Câu hỏi của tôi là, nếu tôi sử dụng nhiều SubmitChanges trong cùng một phạm vi, tất cả các phạm vi sẽ quay trở lại trong trường hợp có lỗi hay chỉ là những thay đổi được thực hiện sau SubmitChanges cuối cùng? Ví dụ:Nhiều SubmitChanges và rollback giao dịch bằng cách sử dụng LINQ To SQL

using (TransactionScope trans = new TransactionScope()) 
{ 
    using (dbDataContext db = new dbDataContext()) 
    { 
     try 
     { 
      //do some insert 
      db.SubmitChanges(); 

      //do some updates 
      db.SubmitChanges(); 

      trans.Complete(); 
     } 
     catch(Exception ex){} 
    } 
} 

Nếu cập nhật SubmitChanges ném ngoại lệ, liệu việc chèn SubmitChanges có quay trở lại quá không?

+2

Kiểm tra câu hỏi tương tự này - http://stackoverflow.com/questions/542525/transactionscope-vs-transaction-in-linq2sql - đặc biệt, câu trả lời đầu tiên –

Trả lời

8

TẤT CẢ thay đổi sẽ quay trở lại, không chỉ thay đổi từ lần gửi cuối cùng(). Bạn thường cần phải sử dụng mẫu này khi bạn có dữ liệu phụ thuộc vào dữ liệu khác - như nếu bạn cần tạo một đối tượng và lấy ID được tạo tự động để làm điều gì đó khác (mặc dù L2SQL hỗ trợ điều đó một SubmitChanges gọi trong hầu hết các kịch bản bằng cách chỉ tạo đối tượng, nhưng tôi digress ...).

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