如何正确使用TransactionScope?

Den*_*nis 34 .net c# vb.net transactionscope

我总是想尝试使用,TransactionScope但我无法弄清楚人们对它的看法是否有用.让我们举一个例子:

using(TransactionScope tran = new TransactionScope()) {
    CallAMethodThatDoesSomeWork1();
    CallAMethodThatDoesSomeWork2();
    tran.Complete();
}
Run Code Online (Sandbox Code Playgroud)

所以最基本的问题是:我如何编写" CallAMethodThatDoesSomeWork1()"以便它知道如果让我们说" CallAMethodThatDoesSomeWork2()"抛出异常会如何推回其行为?

Tre*_*ley 22

您调用的方法中的代码需要知道事务并在活动事务中登记.这意味着创建或使用作为资源管理器的类(请参阅实现您自己的资源管理器.

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