TransactionScope里面有几个交易

时间:2015-03-09 21:02:24

标签: c# .net transactions transactionscope

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

TS正在创建一个环境事务处理,您的DAL层将自动接收。您的代码暗示您希望将delete和create视为原子操作。如果你想让它们独立在第一个之后创建另一个TS块并在那里移动你的create语句。

如果要回滚,则需要在示波器上保留不使用“完成”的使用块,通常会发生这种情况,因为您的一个DAL方法会抛出异常。