1

SqlCe ローカル データベースと対話する WinForms アプリケーションがあります。BindingSources、TableAdapters、および型指定されたデータセットを使用してデータベース操作を管理します。トランザクションで実行する必要がある 2 つの異なるクラスのいくつかのメソッドにいくつかの操作が分散しており、System.Transactions.Transaction または CommitableTransaction を使用することを考えていました。私の質問は、Transaction または CommittableTransaction がトランザクションで正常に機能し、このサンプル コードのエラーでロールバックするか、それとも OtherClassメソッドでもトランザクションを使用する必要があるかということです。

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 */ 
}  
4

1 に答える 1

1

System.Transactions を試してください。トランザクションスコープ

System.Transaction.TransactionScope Remarkセクションによると、

トランザクション スコープ内で例外が発生した場合、例外が参加しているトランザクションはロールバックされます。

于 2009-03-03T00:48:49.020 に答える