具有类型化数据集和 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 数据库双向同步

无法从 SQL Server CE 中删除记录

关于SQL SERVER 解析XML遇到的小问题——0xc00ce508

SQL Server:来自多行的最新属性集和日期

比较 SQL Server CE 中的两个 Datetime 类型(“MMMM-yyyy”)