9

Nhìn vào nó tôi xác nhận rằng ví dụ giá trị o "myInt" không rolledback trong các tình huống saugì một TransactionScope thực sự làm

int myInt = 10; 
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) 
{ 
    myInt=20; 
    Transaction t = Transaction.Current; 

    t.Rollback(); 
} 

Vì vậy, nó đã cho tôi suy nghĩ "Có một TransactionScope chỉ rollback hoạt động liên quan cơ sở dữ liệu? Hoặc có những thứ khác mà Giao dịch có thể quản lý và tôi không biết gì về những thứ đó? "

Trả lời

19

Giao dịch hiện tại chỉ ảnh hưởng đến các đối tượng cụ thể, được gọi là Quản lý tài nguyên. Các đối tượng đó phải thực hiện các giao diện cụ thể để tham gia giao dịch. Đối tượng ADO.NET SqlConnection là một ví dụ. Không khó để tạo một đối tượng hoạt động như "Bộ nhớ giao dịch". Những đối tượng đó được gọi là Quản lý tài nguyên dễ bay hơi. Một ví dụ đơn giản là here.

+0

Ví dụ khác: http://msdn.microsoft.com/en-gb/magazine/cc163688.aspx – Peter

+0

+1 cho câu trả lời xuất sắc –

-3

TransactionScope (và giao dịch) chỉ được sử dụng để xử lý truy vấn cơ sở dữ liệu. Nó sẽ không thực sự có ý nghĩa để "rollback" thay đổi mà chỉ được giữ xung quanh tạm thời anyway, (chẳng hạn như biến int của bạn).

+0

-1 những gì bạn nói không có ý nghĩa gì cả ... nếu tôi đã lưu giá trị này vào một tệp văn bản thì sao? nó sẽ rollback sau đó? – Leonardo

+0

Không, tôi có nghĩa là dữ liệu không liên tục. Một FileWriter sẽ có cơ chế riêng cho các thay đổi "roll back", bạn vẫn không thể sử dụng TransactionScope. – crazylpfan

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