Wenn meine C # .net-Anwendung Datensätze in mehr als einer Tabelle aktualisiert, verwende ich Transaktionen. Wenn also irgendetwas während der Transaktion fehlschlägt, kann ich ein Rollback durchführen.
Welche ist eine bessere Praxis?
- Verwenden Sie die gespeicherte Prozedur mit BEGIN TRANSACTION / ROLLBACK / COMMIT TRANSACTION; Verwenden Sie TransactionScope in der Anwendung wie folgt:
%Vor%TransactionScope ist eine wirklich nette Möglichkeit, Transaktionen im Code zu verwalten. Sie können Transaktionscode über mehrere Methoden verschachteln und bei Bedarf automatisch auf den verteilten Modus skalieren.
Ich bevorzuge es, TransactionScope über gespeicherte Proc-Transaktionen zu verwenden, weil Sie dadurch viel mehr Kontrolle über den Code erhalten.
Wenn Ihre Transaktion zu einer Datenbank geht, dann ist es besser, eine Transaktion in einer gespeicherten Prozedur durchzuführen. Die andere Möglichkeit kann nur durch logistische Probleme verursacht werden (DBA mag Sie nicht, oder er ist im Urlaub). Wenn Sie verschiedene Transaktionsquellen (SQL Server und Oracle) in einer Transaktion aufrufen, gibt es keine andere Möglichkeit als die Transaktion im Code.
Ich würde dringend empfehlen, eine Prozedur für eine Seite einzurichten und alle SQL-Aktionen dort zu verwalten. Wenn auf der Seite mehrere Aufgaben ausgeführt werden müssen, die mehrere Prozeduren erfordern, müssen Sie nur eine Prozedur verwalten, um die anderen Prozeduren zu verwalten. Ihre Vorgehensweise kann bei Bedarf immer mehrere Recordsets zurückgeben.
Hier sind meine 2 einfachen Regeln für die Verwendung von Transaktionen:
Tags und Links sql c# transactions