34

我一直想尝试使用TransactionScope,但我就是不知道人们看到了什么有用的东西。所以我们举个例子:

using(TransactionScope tran = new TransactionScope()) {
    CallAMethodThatDoesSomeWork1();
    CallAMethodThatDoesSomeWork2();
    tran.Complete();
}

所以最基本的问题:CallAMethodThatDoesSomeWork1()如果假设“ CallAMethodThatDoesSomeWork2()”抛出异常,我如何编写“”以便它知道如何回滚其动作?

4

1 回答 1

23

您调用的方法中的代码需要具有事务意识并参与活动事务。这意味着创建或使用作为资源管理器的类(请参阅实现您自己的资源管理器

您可以通过实现IEnlistmentNotification并在事务中登记来做到这一点。事务完成后,事务管理器将调用该接口上定义的方法,以便您的代码可以执行/撤消工作。

于 2013-01-04T16:30:18.030 回答