Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 25346|Odpoveď: 2

[Zdroj] Použitie TransactionScope v C#

[Kopírovať odkaz]
Zverejnené 10. 4. 2017 10:16:25 | | | |
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ď






Predchádzajúci:Príkaz CREATE DATABASE nie je povolený v rámci transakcie s viacerými príkazmi
Budúci:Urobte Linqov OrderBy podporu dynamických polí
 Prenajímateľ| Zverejnené 10. 4. 2017 10:20:30 |
Trieda TransactionScope sa dá použiť vnorená, a ak ju chcete použiť vnorenú, musíte špecifikovať parameter TransactionScopeOption v bloku vnorených transakcií. Predvolený parameter je Povinné.

Keď je potrebná TransactionScopeOption vnorenej triedy TransactionScope, môžete vidieť nasledujúci výsledok, ich transakcie majú rovnaké ID. Navyše, skutočný úspech je len vtedy, keď sú oba TransactionScopes dokončené.

Ak nastavíte TransactionScopeOption na ReneedesNew, vnorené transakčné bloky a vonkajšie transakčné bloky sú nezávislé a navzájom sa neovplyvňujú.

TransactionScopeOption je nastavený na Suppress, aby zrušil transakciu aktuálneho bloku, čo sa vo všeobecnosti používa len zriedka.
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com