TransactionScope
TransactionScope je razred v System.Transactions, ki je razred, ki je priložen .NET ogrodju. Če je TransactionScope sproščen brez klica metode Complete (TransactionScope implementira vmesnik IDisposible, priporočena je uporaba bloka), bo operacija šla za neuspešno in bo izvajanje povrnilo nazaj. TransactionScope je uporaben API, ki upravlja transakcije okoli ("okoli" pomeni, da lahko baze podatkov, ki podpirajo TransactionScope, samodejno upravljajo transakcije), in večina običajnih baz podatkov podpira ta API, vključno z Microsoftovim MSSQL, seveda. Če uporabljate podatkovno bazo ali kakšen transakcijski sistem, ki ne podpira TransactionScope, lahko še vedno uporabite interceptor, vendar boste morali prilagoditi svojo kodo, da bo uporabljala ustrezen API, ki podpira transakcije (npr. uporaba BeginTransaction API-ja za pridobitev implementacije IDbTransactions ponudnika podatkovne baze).
Zgoraj je prilagojena izjema, ki sem jo namerno vrgel, da vidim, ali jo je mogoče normalno vrniti nazaj, in spodnja slika prikazuje normalno izvajanje, brez izjem.
Klic metode TransactionScope Complete pomeni, da je transakcija uspešno izvedena. Seveda, če je transakcija vedno izvedena, transakcija ni potrebna. Razlog za transakcije je reševanje problema neuspeha v več operacijah, in če pride do neuspeha, se ta razveljavi. Ker je . .NET-ov TransactionScope nima eksplicitnega klica povračila, najbližji ekvivalent pa je uporaba metode Dispose. Če se TransactionScope sprosti pred klicem metode Complete, TransactionScope izvede rollback. Zato je treba klic Dispose dodati na obraz prestreznika transakcij, da se izvede razveljavitev.
Na koncu priložite kodo!
Priložena je izvorna koda:Turisti, če želite videti skrito vsebino te objave, prosim Odgovoriti
|