TransactionScope
TransactionScope este o clasă în System.Transactions, care vine cu framework-ul .NET. Dacă TransactionScope este eliberat fără a chema metoda Complete (TransactionScope implementează interfața IDisposible, se recomandă folosirea blocului), atunci va considera operația ca fiind eșuată și va anula execuția. TransactionScope este un API util care gestionează tranzacțiile în jurul ("în jur" înseamnă că bazele de date care suportă TransactionScope pot gestiona automat tranzacțiile), iar majoritatea bazelor de date mainstream suportă acest API, inclusiv, desigur, MSSQL-ul Microsoft. Dacă folosești o bază de date sau un sistem legat de tranzacții care nu suportă TransactionScope, poți totuși folosi interceptorul, dar va trebui să modifici codul pentru a folosi un API potrivit care suportă tranzacții (de exemplu, folosind API-ul BeginTransaction pentru a obține implementarea IDbTransactions de către furnizorul de baze de date).
Cea de mai sus este o excepție personalizată pe care am aruncat-o intenționat pentru a vedea dacă poate fi anulată normal, iar imaginea de mai jos arată execuția normală, fără excepții.
Apelarea metodei Complete a TransactionScope indică faptul că tranzacția a fost executată cu succes. Desigur, dacă tranzacția este întotdeauna executată, atunci tranzacția nu este necesară. Motivul pentru care există tranzacții este pentru a rezolva problema eșecului în mai multe operații, iar dacă apare o defecțiune, aceasta va fi anulată. Pentru că . .NET TransactionScope nu există un apel explicit de rollback, iar echivalentul cel mai apropiat este utilizarea metodei Dispose. Dacă TransactionScope este eliberat înainte ca metoda Complete să fie apelată, atunci TransactionScope efectuează o rollback. Prin urmare, trebuie adăugat un apel Dispose pe fața interceptorului tranzacțiilor pentru a efectua rollback-ul.
În final, atașează codul!
Atașat este codul sursă:Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rog Răspunde
|