TransactionScope
TransactionScope je trieda v System.Transactions, čo je trieda, ktorá je súčasťou .NET frameworku. Ak sa TransactionScope uvoľní bez vyvolania metódy Complete (TransactionScope implementuje rozhranie IDisposible, odporúča sa použiť blok), potom operácia zlyhá a vráti sa späť k vykonaniu. TransactionScope je užitočné API, ktoré spravuje transakcie okolo ("around" znamená, že databázy podporujúce TransactionScope môžu automaticky spravovať transakcie) a väčšina bežných databáz toto API podporuje, vrátane Microsoft vlastného MSSQL, samozrejme. Ak používate databázu alebo nejaký systém súvisiaci s transakciami, ktorý nepodporuje TransactionScope, stále môžete použiť interceptor, ale budete musieť upraviť svoj kód tak, aby používal vhodné API, ktoré podporuje transakcie (napr. použitie BeginTransaction API na získanie implementácie IDbTransactions od poskytovateľa databázy).
Vyššie uvedená je vlastná výnimka, ktorú som zámerne hodil, aby som zistil, či sa dá vrátiť späť normálne, a obrázok nižšie ukazuje normálne vykonávanie bez výnimiek.
Volanie metódy Complete v TransactionScope znamená, že transakcia bola úspešne vykonaná. Samozrejme, ak je transakcia vždy vykonaná, transakcia nie je potrebná. Dôvod, prečo existujú transakcie, je vyriešiť problém zlyhania vo viacerých operáciách, a ak k neúspechu dôjde, bude vrátený späť. Pretože . .NET v TransactionScope nemá explicitné volanie spätného výberu a najbližším ekvivalentom je použitie metódy Dispose. Ak je TransactionScope uvoľnený pred zavolaním metódy Complete, TransactionScope vykoná rollback. Preto je potrebné na zachytávaciu stranu transakcií pridať hovor Dispose na vykonanie rollbacku.
Nakoniec pripojte kód!
Priložený je zdrojový kód:Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím. Odpoveď
|