Was sind die Vor- und Nachteile der Verwendung von TransactionScope im Vergleich zu IDbTransaction? Ich werde einige vorschlagen - bitte korrigieren/ergänzen Sie die Liste.
Vorteile von TransactionScope:
- TransactionScope unterstützt verteilte Transaktionen - Sie können auf mehrere Datenquellen zugreifen oder mehrere Verbindungen zu einer Datenquelle innerhalb einer Transaktion verwenden.
- TransactionScope ist deklarativer: Wir können TransactionScopes verschachteln und es ist angenehmer, ihn im Service-Layer zu verwenden (wir müssen keine IDbConnection und IDbTransaction selbst verwalten).
- Ich bin mir nicht sicher über den dritten Punkt, aber hier ist er. IDbTransaction ist spezifisch für die Verbindung - Sie müssen die Verbindung während der gesamten Transaktion offen halten. Ich bin mir nicht sicher, ob die Verbindung/Verbindungen während des gesamten TransactionScope geöffnet sein sollten (bitte klären Sie das). Wenn nicht, ist der folgende Ablauf möglich: Transaktion starten, Verbindung öffnen - Abfrage - abrufen - Verbindung schließen, ressourcenintensive Berechnung ausführen (Verbindungen geschlossen halten), Verbindung öffnen - Abfrage - abrufen - Verbindung schließen, ..., Transaktion bestätigen. Aber ich denke, es ist unmöglich, dass ein TransactionScope Verbindungen bis zum Commit offen hält.
Nachteile von TransactionScope:
- Es unterstützt keine Änderung des IsolationLevels während der Transaktion.