Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 25346|Antwort: 2

[Quelle] Verwendung von TransactionScope in C#

[Link kopieren]
Veröffentlicht am 10.04.2017 10:16:25 | | | |
TransactionScope

TransactionScope ist eine Klasse in System.Transactions, einer Klasse, die mit dem .NET-Framework geliefert wird. Wenn das TransactionScope ohne Aufruf der Complete-Methode freigegeben wird (TransactionScope implementiert die IDisposible-Schnittstelle, die Verwendung eines Blocks wird empfohlen), wird die Operation als fehlgeschlagen angesehen und die Ausführung zurückgesetzt.
TransactionScope ist eine nützliche API, die Transaktionen verwaltet ("around" bedeutet, dass Datenbanken, die TransactionScope unterstützen, Transaktionen automatisch verwalten können), und die meisten gängigen Datenbanken unterstützen diese API, einschließlich Microsofts eigener MSSQL natürlich.
Wenn Sie eine Datenbank oder ein transaktionsbezogenes System verwenden, das TransactionScope nicht unterstützt, können Sie den Interceptor weiterhin verwenden, müssen aber Ihren Code anpassen, um eine geeignete API zu verwenden, die Transaktionen unterstützt (z. B. mit der BeginTransaction-API, um die Implementierung von IDbTransactions durch den Datenbankanbieter zu erhalten).



Das oben Genannte ist eine benutzerdefinierte Ausnahme, die ich absichtlich verwendet habe, um zu sehen, ob sie normal zurückgesetzt werden kann, und das Bild unten zeigt die normale Ausführung ohne Ausnahmen.




Das Aufrufen der Complete-Methode von TransactionScope zeigt an, dass die Transaktion erfolgreich ausgeführt wurde. Natürlich ist die Transaktion nicht nötig, wenn die Transaktion immer ausgeführt wird. Der Grund, warum es Transaktionen gibt, ist, das Problem eines Ausfalls in mehreren Operationen zu lösen, und falls es einen Fehler gibt, wird dieser zurückgesetzt.
Weil das . In .NETs TransactionScope gibt es keinen expliziten Rollback-Aufruf, und das nächstliegende Äquivalent ist die Verwendung der Dispose-Methode. Wenn das TransactionScope vor dem Aufruf der Complete-Methode freigegeben wird, führt das TransactionScope einen Rollback durch. Daher muss ein Dispose-Aufruf an die Transaktions-Interceptor-Fläche hinzugefügt werden, um den Rollback durchzuführen.


Zum Schluss den Code anhängen!


Angehängt ist der Quellcode:
Touristen, wenn ihr den versteckten Inhalt dieses Beitrags sehen wollt, bitteAntwort






Vorhergehend:Die CREATE DATABASE-Anweisung ist in einer Multi-Statement-Transaktion nicht erlaubt
Nächster:Lassen Sie Linqs OrderBy dynamische Felder unterstützen
 Vermieter| Veröffentlicht am 10.04.2017 10:20:30 |
Die Klasse TransactionScope kann verschachtelt verwendet werden, und wenn Sie sie verschachtelt verwenden möchten, müssen Sie den Parameter TransactionScopeOption im verschachtelten Transaktionsblock angeben. Der Standardparameter ist Erforderlich.

Wenn die TransactionScopeOption der verschachtelten Klasse TransactionScope erforderlich ist, sehen Sie folgendes Ergebnis: Ihre Transaktionen haben dieselbe ID. Außerdem ist es nur dann ein wirklicher Erfolg, wenn beide Transaktionsscopes abgeschlossen sind.

Wenn Sie TransactionScopeOption auf RequiresNew setzen, sind die verschachtelten Transaktionsblöcke und die äußeren Transaktionsblöcke unabhängig und beeinflussen sich nicht gegenseitig.

TransactionScopeOption ist auf Suppress gesetzt, um die Transaktion des aktuellen Blocks zu annulieren, was in der Regel selten verwendet wird.
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com