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érlek Válasz
|