事务范围,里面有几个事务

本文关键字:事务 有几个 范围 | 更新日期: 2024-11-05 04:49:46

我尝试以这种方式使用TransactionScope:

using (TransactionScope ts = new TransactionScope())
  {
     DAL.delete();
     DAL.create();           
     ts.Complete();
  }

我有独立的DAL(数据访问层)模块来执行数据库操作。每个操作,如 delete(), create() 都是原子的,即它们都是通过调用提交的。

我尝试了这段代码,以便将这两个操作包装在一起作为事务。而且不管我是否写了ts。Complete();,它们都提交到数据库,不会发生回滚。

在这种情况下我该怎么办?谢谢。

事务范围,里面有几个事务

TS 正在创建一个环境事务,DAL 层将自动获取该事务。 您的代码意味着您希望将删除和创建视为原子操作。 如果您希望它们独立,请在第一个 TS 块之后创建另一个 TS 块,并将您的 create 语句移动到那里。

如果要回滚,则需要保留使用块而不在作用域上调用 Complete,通常发生这种情况是因为其中一个 DAL 方法引发异常。