我有一个与SqlCe本地数据库交互的WinForms应用程序。我使用BindingSources,TableAdapters和类型化数据集管理数据库操作。我有几个操作分散在我需要在事务中执行的两个不同类中的几个方法中,我正在考虑使用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 */
}
答案 0 :(得分:1)
尝试 System.Transactions。 TransactionScope 。
根据System.Transaction.TransactionScope Remark部分,
如果在事务范围内发生异常,则其参与的事务将回滚。