1

我创建了一个隐式事务,如下所示:

Using ts As New TransactionScope(TransactionScopeOption.Required, New TimeSpan(1, 0, 0, 0))

MethodA()
ts.Complete()

End Using

MethodA()依次调用一些成功加入环境事务的方法,我可以看到它:

在此处输入图像描述

但是,一种方法(从TransactionScope上面的创建到调用堆栈的深度为 4)似乎我们不再可以访问环境事务:

在此处输入图像描述

我相信这将在事务中堆栈的任何较低位置可用,这可能是此方法中的代码无法访问此事务中的数据的原因。

任何想法为什么环境交易不可用?

4

1 回答 1

1

如果Transaction未声明,则听起来该文件只是缺少using将其纳入范围的指令。尝试将手表设置为

System.Transactions.Trasaction.Current.TransactionTraceId.TransactionIdentifier

相反,因为无论有没有using指令都可以。

如果是环境事务不可用的情况,那么Transaction仍然可以,但Transaction.Current可以null。一个常见的原因是任何切换线程的东西,例如async代码。了解执行上下文中的内容是很棘手的。

于 2013-03-07T11:18:33.627 回答