9

içine bakıyor aşağıdaki Senaryo Yanibir TransactionScope ne yapar gerçekten yapmak

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

    t.Rollback(); 
} 

bana düşünmemi sağladı "TransactionScope sadece ilgili faaliyetler geri alma mu içinde rolledback değil "myInt" u nedenle örneğin değerini doğrulandı Veritabanına mı? Yoksa İşlemin yönetebileceği başka şeyler var ve bunların farkında değil miyim? ”

cevap

19

Geçerli işlem yalnızca Kaynak Yöneticileri olarak adlandırılan belirli nesneleri etkiler. Bu nesne, işlemlere katılmak için belirli arayüzleri uygulamalıdır. ADO.NET SqlConnection nesnesi bir örnektir. "İşlemsel Bellek" olarak çalışan bir nesne oluşturmak zor değildir. Bu nesnelere Uçucu Kaynak Yöneticileri denir. Basit bir örnek here.

+0

Başka bir örnek: Mükemmel yanıt için http://msdn.microsoft.com/en-gb/magazine/cc163688.aspx – Peter

+0

+1 –

-3

İşlemScope (ve İşlemler) yalnızca veritabanı sorgularını işlemek için kullanılır. Yalnızca geçici olarak (int değişkeni gibi) yalnızca geçici olarak tutulan değişiklikleri "geri almanın" gerçekten bir anlamı olmaz.

+0

-1 dediğiniz hiç bir şey ifade etmiyor ... bu değeri bir metin dosyasına kaydedersem ne olur? o zaman geri alınır? – Leonardo

+0

Hayır, kalıcı olmayan verileri kastediyorum. Bir FileWriter 'geri dönüş' değişiklikleri için kendi mekanizmasına sahip olur, hala TransactionScope'u kullanamazsınız. – crazylpfan