事务范围,里面有几个事务
本文关键字:事务 有几个 范围 | 更新日期: 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 方法引发异常。