基础提供程序在EnlistTransaction上失败;无法访问已处置的对象

时间:2013-04-15 16:32:03

标签: c# .net vb.net transactions transactionscope

请参阅以下异常和堆栈跟踪,这似乎表示我正在尝试加入已处置的transaction

  

System.Data.EntityException:基础提供程序失败   EnlistTransaction。 ---> System.ObjectDisposedException:无法访问   被处置的物体。对象名称:'交易'。在   System.Transactions.Transaction.get_TransactionInformation()at   Oracle.DataAccess.Client.OracleConnection.EnlistTransaction(交易成交)   在   System.Data.EntityClient.EntityConnection.EnlistTransaction(交易成交)   ---内部异常堆栈跟踪结束---在System.Data.EntityClient.EntityConnection.EnlistTransaction(事务事务)   在System.Data.Objects.ObjectContext.EnsureConnection()at   System.Data.Objects.ObjectContext.ExecuteStoreCommand(字符串的CommandText,对象[]参数)   在   Reconciliation.Models.BillLines.BillLines.Reconciliation.Interfaces.IBillLineEntities.ExecuteStoreCommand(字符串,对象[])   在   Reconciliation.Models.Legacy.EntityDbEnvironment.ExecuteOracleSql(SQL字符串)   在BillLineGeneratorDLL.BillExceptionChecks。 ClearOldGroupExceptions ()

ClearOldGroupExceptions()的正文完全封装在TransactionScope中,其选项设置为TransactionScopeOption.Required

根据the documentation,这应该意味着:

  

范围需要交易。它使用环境事务   如果一个已经存在。否则,它会在之前创建事务   进入范围。这是默认值。

因此,我很难理解为什么在处理当前交易之后,为什么在进入范围之前没有创建新交易。

有什么想法吗?

0 个答案:

没有答案