Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 25346|Antwoord: 2

[Bron] Gebruik van TransactionScope in C#

[Link kopiëren]
Geplaatst op 10-04-2017 10:16:25 | | | |
TransactionScope

TransactionScope is een klasse in System.Transactions, een klasse die wordt geleverd met het .NET-framework. Als de TransactionScope wordt vrijgegeven zonder de Complete-methode aan te roepen (TransactionScope implementeert de IDisposible-interface, het gebruik van block wordt aanbevolen), dan zal het de operatie als mislukt beschouwen en de uitvoering terugdraaien.
TransactionScope is een nuttige API die transacties beheert ("rond" betekent dat databases die TransactionScope ondersteunen automatisch transacties kunnen beheren), en de meeste reguliere databases ondersteunen deze API, waaronder natuurlijk Microsofts eigen MSSQL.
Als je een database of een transactie-gerelateerd systeem gebruikt dat TransactionScope niet ondersteunt, kun je de interceptor nog steeds gebruiken, maar je zult je code moeten aanpassen om een geschikte API te gebruiken die transacties ondersteunt (bijvoorbeeld door de BeginTransaction API te gebruiken om de implementatie van IDbTransactions door de databaseprovider te krijgen).



Bovenstaande is een aangepaste uitzondering die ik bewust heb toegevoegd om te zien of het normaal kan worden teruggerold, en de onderstaande afbeelding toont normale uitvoering, zonder uitzonderingen.




Het aanroepen van de Complete-methode van TransactionScope geeft aan dat de transactie succesvol is uitgevoerd. Natuurlijk, als de transactie altijd wordt uitgevoerd, is de transactie niet nodig. De reden dat er transacties zijn, is om het probleem van uitval in meerdere operaties op te lossen, en als er een storing is, wordt deze teruggedraaid.
Omdat de . In .NET's TransactionScope is er geen expliciete rollback-aanroep, en het dichtstbijzijnde equivalent is het gebruik van de Dispose-methode. Als de TransactionScope wordt vrijgegeven voordat de Complete-methode wordt aangeroepen, voert de TransactionScope een rollback uit. Daarom moet een Dispose-aanroep aan het transactie-interceptorvlak worden toegevoegd om de rollback uit te voeren.


Tot slot, voeg de code toe!


Bijgevoegd is de broncode:
Toeristen, als jullie de verborgen inhoud van dit bericht willen zien, alsjeblieftAntwoord






Vorig:De CREATE DATABASE-instructie is niet toegestaan binnen een multi-statement transactie
Volgend:Laat Linq's OrderBy dynamische velden ondersteunen
 Huisbaas| Geplaatst op 10-04-2017 10:20:30 |
De TransactionScope-klasse kan genest worden gebruikt, en als je hem genest wilt gebruiken, moet je de TransactionScopeOption-parameter specificeren in het geneste transactieblok. De standaardparameter is Vereist.

Wanneer de TransactionScopeOption van de geneste klasse TransactionScope vereist is, zie je het volgende resultaat: hun transacties hebben hetzelfde ID. Bovendien is het pas echt succes als beide TransactionScopes compleet zijn.

Als je TransactionScopeOption op RequiresNew zet, zijn de geneste transactieblokken en de buitenste transactieblokken onafhankelijk en beïnvloeden ze elkaar niet.

TransactionScopeOption staat op Suppress om de transactie van het huidige blok te annuleren, wat over het algemeen zelden wordt gebruikt.
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com