我尝试以这种方式使用TransactionScope:
using (TransactionScope ts = new TransactionScope())
{
DAL.delete();
DAL.create();
ts.Complete();
}
其中我有独立的DAL(数据访问层)模块来做数据库操作。像delete(),create()这样的每个操作都是原子的,即它们都是通过调用提交的。
我尝试过这段代码,以便将这两个操作作为事务包装在一起。无论我是否编写了ts.Complete();,它们都被提交到数据库并且不会发生回滚。
在这种情况下我该怎么办?感谢。
答案 0 :(得分:0)
TS正在创建一个环境事务处理,您的DAL层将自动接收。您的代码暗示您希望将delete和create视为原子操作。如果你想让它们独立在第一个之后创建另一个TS块并在那里移动你的create语句。
如果要回滚,则需要在示波器上保留不使用“完成”的使用块,通常会发生这种情况,因为您的一个DAL方法会抛出异常。