Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 25346|Válasz: 2

[Forrás] A TransactionScope használata C#-ban

[Linket másol]
Közzétéve 2017. 04. 10. 10:16:25 | | | |
TransactionScope

A TransactionScope egy osztály a System.Transactions rendszerben, amely a .NET keretrendszerhez tartozik. Ha a TransactionScope a Complete metódus hívása nélkül kerül kiadásra (a TransactionScope implementálja az IDisposible interfészt, a blokk használata ajánlott), akkor a műveletet sikertelennek tekinti, és visszahúzza a végrehajtást.
A TransactionScope egy hasznos API, amely a tranzakciókat kezeli ("around" azt jelenti, hogy a TransactionScope-ot támogató adatbázisok automatikusan kezelhetik a tranzakciókat), és a legtöbb mainstream adatbázis támogatja ezt az API-t, beleértve természetesen a Microsoft saját MSSQL-jét is.
Ha olyan adatbázist vagy tranzakcióhoz kapcsolódó rendszert használsz, amely nem támogatja a TransactionScope-ot, akkor is használhatod az interceptort, de módosítanod kell a kódodat, hogy megfelelő API-t használj, amely támogatja a tranzakciókat (például a BeginTransaction API-val megkapod az adatbázis-szolgáltató IDbTransactions implementációját).



A fenti egy egyedi kivétel, amit szándékosan dobtam, hogy megnézzem, vissza lehet állítani normálisan, és az alábbi kép normál végrehajtást mutat, kivételek nélkül.




A TransactionScope Complete metódusának hívása azt jelzi, hogy a tranzakció sikeresen végrehajtott. Természetesen, ha a tranzakció mindig le van hajtva, akkor nincs rá szükség. Azért vannak tranzakciók, hogy megoldják a több művelet hibájának problémáját, és ha hiba történik, vissza fogják fordítani.
Mert a . A .NET TransactionScope esetében nincs explicit visszahívás, és a legközelebbi megfelelője a Dispose módszer. Ha a TransactionScope a Complete metódus hívása előtt szabadul ki, akkor a TransactionScope visszahúzást hajt végre. Ezért a visszagörcs végrehajtásához egy Dispose hívást kell hozzáadni a tranzakciós elfogó archoz.


Végül csatold a kódot!


Csatolva van a forráskód:
Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlekVálasz






Előző:A CREATE DATABASE utasítás nem engedélyezett többmondatos tranzakcióban
Következő:Make Linq OrderBy támogatása dinamikus mezők
 Háziúr| Közzétéve 2017. 04. 10. 10:20:30 |
A TransactionScope osztály fészkelve használható, és ha azt akarod bingeltesben használni, meg kell határoznod a TransactionScopeOption paramétert a beépített tranzakcióblokkban. Az alapértelmezett paraméter a Required.

Amikor a TransactionScope osztály TransactionScopeOption opciója szükséges, a következő eredményt láthatod: a tranzakcióik ugyanazzal az azonosítóval rendelkeznek. Ráadásul csak akkor lesz igazi siker, ha mindkét TransactionScope teljes.

Ha a TransactionScopeOption-t RequiresNew-re állítod, a beágyazott tranzakcióblokkok és a külső tranzakcióblokkok függetlenek, és nem befolyásolják egymást.

A TransactionScopeOption beállítása Suppress módra van állítva, hogy törölje a jelenlegi blokk tranzakcióját, amit általában ritkán használnak.
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com