具有类型化数据集和 Sql Server CE 的事务
Posted
技术标签:
【中文标题】具有类型化数据集和 Sql Server CE 的事务【英文标题】:Transactions with typed dataset and Sql Server CE 【发布时间】:2009-03-02 13:51:55 【问题描述】:我有一个与 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 */
【问题讨论】:
【参考方案1】:试试System.Transactions。TransactionScope。
根据 System.Transaction.TransactionScope Remark 部分,
如果事务范围内确实发生异常,则其参与的事务将回滚。
【讨论】:
以上是关于具有类型化数据集和 Sql Server CE 的事务的主要内容,如果未能解决你的问题,请参考以下文章
使用 SQL Server Express 和 SQL Server CE
SQL Server CE 与远程 Access 数据库双向同步