.net 我可以在TransactionScope块内使用SqlConnection.BeginTransaction吗

.net 我可以在TransactionScope块内使用SqlConnection.BeginTransaction吗,.net,vb.net,windows,transactions,transactionscope,.net,Vb.net,Windows,Transactions,Transactionscope,我有这样的想法: Dim options As New TransactionOptions With {.IsolationLevel = IsolationLevel.ReadCommitted, .Timeout = TimeSpan.MaxValue} Using scope As New TransactionScope(TransactionScopeOption.Required, options) 'Do

我有这样的想法:

      Dim options As New TransactionOptions With {.IsolationLevel = IsolationLevel.ReadCommitted, .Timeout = TimeSpan.MaxValue}

            Using scope As New TransactionScope(TransactionScopeOption.Required, options)


                'Do some db operations
                MyLibrary.ExecuteTransaction()

                scope.Complete()
            End Using
在我的图书馆里我有这样的东西

Public Function ExecuteTransaction()
  SqlDim transaction As SqlTransaction
            transaction = cConn.BeginTransaction("MyTransaction")
  'Do some db operations
  transaction.commit()
End Function
但有时我在我的图书馆里遇到一个例外:

Communication with the underlying transaction manager has failed.
at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)
我的应用服务器在一台机器上,数据库服务器和另一台机器上。MSDTC在bouth服务器中配置为接受远程事务


?有人能帮我吗?

原则上我不明白你为什么不能使用它,但你在开始“手动”交易之前完成了交易范围,而且你似乎没有处理“手动”交易,这可能是问题所在,也可能不是问题所在。抱歉,我尚未更正。调用Library后会调用complete()方法即使可以,为什么要这样做?为什么要混合使用这两种创建事务的方法?MyLibrary.dll是一个遗留项目。我需要在我的项目中使用它。我的事务(TransactionScope)涉及对这些库的调用。不,在同一个连接上不能有多个事务。创建TransactionScope时,它会为您完成创建事务的繁重工作(如SqlTransaction)。不过,我本以为会出现另一个错误。我假设这不是出现错误的代码,而是一个示例?(因为这是一个ELO错误,而不是SQLClient错误)。