【发布时间】:2015-03-09 21:02:24
【问题描述】:
我尝试以这种方式使用 TransactionScope:
using (TransactionScope ts = new TransactionScope())
{
DAL.delete();
DAL.create();
ts.Complete();
}
我有独立的 DAL(数据访问层)模块来执行数据库操作。像 delete()、create() 这样的每个操作都是原子的,即它们都是通过调用提交的。
我已经尝试过这段代码,以便将这两个操作包装在一起作为一个事务。而且不管我写的是不是 ts.Complete();,它们都被提交到数据库中,不会发生回滚。
在这种情况下我该怎么办?谢谢。
【问题讨论】:
-
您是否尝试过与 ts.Rollback() 相同的操作?
-
您使用的是什么数据库和数据访问框架?它是否支持事务范围?
-
如果您使用的是
Sql Server,请咨询此处的MSDN TransactionScope Class -
没有回滚功能,如果事情没有按预期进行就不要完成。
-
就像我提到的, ts.Complete() 不会影响结果。即我找不到回滚的方法。正如文档所说,如果我们不提供 ts.Complete() 操作将自动回滚。主要问题是如何控制小交易的交易。
标签: c# .net transactions transactionscope