title: Nhibernate with TransactionScope Error - DTC transaction prepre phase failed -- Upgrade to Nhibernate 3.0
body: <p>I am getting the following exception when using Nhibernate and ADO.Net operations inside the transaction Scope.Eg. It was fine with Nhibernate 2.1 but now  upgraded to 3.0 which throws error.</p>
  
  <pre><code>using (var scope = new TransactionScope(TransactionScopeOption.Required))
  {
          GetmemberId(); --&gt; NHibernate Call
          Update(); ADO Call OracleDB
  }
  </code></pre>
  
  <p>Since this acts as ambient transaction, Nhibernate tries to dispose the transaction soon before the outer transaction completes.correct me if I am wrong, Is there any solution because help me , But When I move the Nhibernate call outside TransactionScope everything works fine. The example I have given is sample one, mines involves a more complex one, since I have keep both the calls inside TransactionScope and the error Iam getting is as following, </p>
  
  <blockquote>
    <p>ERROR 13 NHibernate.Impl.AbstractSessionImpl - DTC transaction prepre
    phase failed System.ObjectDisposedException: Cannot access a disposed
    object. Object name: 'Transaction'.    at
    System.Transactions.Transaction.DependentClone(DependentCloneOption
    cloneOption)    at
    System.Transactions.TransactionScope.SetCurrent(Transaction
    newCurrent)    at System.Transactions.TransactionScope.PushScope()<br>
    at System.Transactions.TransactionScope.Initialize(Transaction
    transactionToUse, TimeSpan scopeTimeout, Boolean interopModeSpecified)
    at System.Transactions.TransactionScope..ctor(Transaction
    transactionToUse)    at
    NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare(PreparingEnlistment
    preparingEnlistment) 2011-02-08 13:41:46,033 ERROR 13
    NHibernate.Impl.AbstractSessionImpl - DTC transaction prepre phase
    failed System.ObjectDisposedException: Cannot access a disposed
    object. Object name: 'Transaction'.    at
    System.Transactions.Transaction.DependentClone(DependentCloneOption
    cloneOption)    at
    System.Transactions.TransactionScope.SetCurrent(Transaction
    newCurrent)    at System.Transactions.TransactionScope.PushScope()<br>
    at System.Transactions.TransactionScope.Initialize(Transaction
    transactionToUse, TimeSpan scopeTimeout, Boolean interopModeSpecified)
    at System.Transactions.TransactionScope..ctor(Transaction
    transactionToUse)    at
    NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare(PreparingEnlistment
    preparingEnlistment)</p>
  </blockquote>