1

Ich habe eine WinForms-Anwendung, die mit einer lokalen SqlCe-Datenbank interagiert. Ich verwalte DB-Operationen mit BindingSources, TableAdapters und typisierten Datasets. Ich habe mehrere Operationen verstreut über mehrere Methoden in zwei verschiedenen Klassen, die ich in einer Transaktion ausführen muss, und ich dachte, System.Transactions.Transaction oder CommitableTransaction zu verwenden. Meine Frage ist, würde Transaktion oder CommittableTransaction Arbeit erfolgreich in einer Transaktion und Rollback zu einem Fehler in diesem Beispielcode oder muss ich auch zu in Other Methoden Transaktion verwenden ?:Transaktionen mit typisiertem Dataset und Sql Server CE

OtherClass othercls = new OtherClass(); 
... 

private void DoAll() 
{ 
/* begin transaction here */ 
this.tableAdapter.DoSomeDBWork(); 
othercls.DeleteSomeRecords(); //uses tableadapter+sql code to delete. throws exception on error. doesn't have transaction 
othercls.DeletOtherRecords(); //uses tableAdapter.Rows.Find(id).Delete(). throws exception on error. doesn't have transaction 
othercls.Update(); //uses tableadapter.Update(). throws exception on error. doesn't have transaction 
this.DeleteSomeFiles(); //throws exception on fail 
/* end transaction here */ 
} 

Antwort

1

Versuchen System.Transactions . TransactionScope.

Nach System.Transaction.TransactionScope Remark Abschnitt

Wenn eine Ausnahme im Transaktionsbereich auftritt, beteiligt sich die Transaktion, bei der es zurück gerollt sein.