带有TransactionScope错误的Nhibernate - DTC事务预处理阶段失败 - 升级到Nhibernate 3.0

Pra*_*abu 5 nhibernate transactionscope

在事务Scope.Eg中使用Nhibernate和ADO.Net操作时,我收到以下异常.Nhibernate 2.1很好,但现在升级到3.0,这会引发错误.

using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
        GetmemberId(); --> NHibernate Call
        Update(); ADO Call OracleDB
}
Run Code Online (Sandbox Code Playgroud)

由于此作为环境事务,NHibernate的尝试很快就处理交易之前外部事务completes.correct我,如果我错了,有没有什么办法,因为帮助我,但是当我移动NHibernate的外呼TransactionScope的一切工作正常.我给出的示例是示例1,mines涉及更复杂的示例,因为我在TransactionScope中保留了两个调用,并且Iam得到的错误如下所示,

错误13 NHibernate.Impl.AbstractSessionImpl - DTC事务预处理阶段失败System.ObjectDisposedException:无法访问已处置的对象.对象名称:'交易'.在System.Transactions.Transaction.DependentClone(DependentCloneOption cloneOption)在System.Transactions.TransactionScope.SetCurrent(事务newCurrent)在System.Transactions.TransactionScope.PushScope()
在System.Transactions.TransactionScope.Initialize(事务transactionToUse,时间跨度scopeTimeout,布尔interopModeSpecified)在System.Transactions.TransactionScope..ctor(事务transactionToUse)在NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare(preparingEnlistment preparingEnlistment)2011-02-08 13:41:46033 ERROR 13 NHibernate.Impl .AbstractSessionImpl - DTC事务预处理阶段失败System.ObjectDisposedException:无法访问已处置的对象.对象名称:'交易'.在System.Transactions.Transaction.DependentClone(DependentCloneOption cloneOption)在System.Transactions.TransactionScope.SetCurrent(事务newCurrent)在System.Transactions.TransactionScope.PushScope()
在System.Transactions.TransactionScope.Initialize(事务transactionToUse,时间跨度scopeTimeout,布尔interopModeSpecified)在System.Transactions.TransactionScope..ctor(交易transactionToUse)在NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare(preparingEnlistment preparingEnlistment)

Med*_*ion 6

尝试

Configuration.SetProperty(Environment.TransactionStrategy,"NHibernate.Transaction.AdoNetTransactionFactory")

或者在nhibernate配置中

<property name="transaction.factory_class">
NHibernate.Transaction.AdoNetTransactionFactory
</property>
Run Code Online (Sandbox Code Playgroud)

它适用于我=)