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, bitte Antwort
|