Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 25346|Odgovoriti: 2

[Vir] Uporaba TransactionScope v C#

[Kopiraj povezavo]
Objavljeno na 10. 04. 2017 10:16:25 | | | |
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, prosimOdgovoriti






Prejšnji:Ukaz CREATE DATABASE ni dovoljen v večstavkovni transakciji
Naslednji:Naj Linqov OrderBy podpira dinamična polja
 Najemodajalec| Objavljeno na 10. 04. 2017 10:20:30 |
Razred TransactionScope je mogoče uporabiti v gnezdenju, in če ga želite uporabiti v gnezdenem bloku, morate v gnezdenem transakcijskem bloku določiti parameter TransactionScopeOption. Privzeti parameter je Zahtevano.

Ko je TransactionScopeOption za gnezdeni razred TransactionScope potreben, lahko vidite naslednji rezultat: njihove transakcije imajo enak ID. Poleg tega je pravi uspeh šele, ko sta oba TransactionScopea dokončana.

Če nastavite TransactionScopeOption na RequiresNew, so ugnezdeni transakcijski bloki in zunanji transakcijski bloki neodvisni in drug na drugega ne vplivata.

TransactionScopeOption je nastavljen na Suppress, da prekliče transakcijo trenutnega bloka, kar se običajno redko uporablja.
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com