I haven't really looked much into the session.BeginTransaction(). I
need use nHibernate with MSMQ and WCF and my feeling is that
session.BeginTransaction will not hock into the WCF transaction. Am I
wrong? I can't find much on it.

On Apr 15, 11:59 pm, Diego Mijelshon <[email protected]> wrote:
> I'm not big on ambient transactions... but your I think there's a problem
> with your code.
> IMO, it should look like this:
>
>        using (TransactionScope tx =
> new TransactionScope(TransactionScopeOption.RequiresNew))
>        using (ISession session = sessions.OpenSession())
>        using (ITransaction nhtx = session.BeginTransaction())
>        {
>            W s = new W();
>            session.Save(s);
>            session.Flush();
>            nhtx.Commit();
>        }
>
> Try it and see if there's any difference.
>
>    Diego
>
>
>
> On Thu, Apr 15, 2010 at 01:48, Iain <[email protected]> wrote:
> > Hi All,
>
> > I am having a connection leak when we using the ambient transaction,
> > and the transaction is aborted. That is, I get the exception:
> > System.InvalidOperationException: Timeout expired.  The timeout period
> > elapsed prior to obtaining a connection from the pool.  This may have
> > occurred because all pooled connections were in use and max pool size
> > was reached.
>
> > I am guessing something is holding onto a reference to the connection,
> > or an internal part of the connection. As adding a watch to following
> > and debug breaking within the transaction also causes this issue.
> >                ((System.Data.SqlClient.SqlInternalConnectionTds)
> > ((System.Data.SqlClient.SqlConnection)
> > (session.Connection))._innerConnection)._connectionPool.Count
>
> > Is this a known issue or unsupported? Currently our workaround is to
> > promote the transaction to a distributed transaction which seems to
> > work ok, as per this article:
> >http://davybrion.com/blog/2010/03/msdtc-woes-with-nservicebus-and-nhi...
>
> > Here is the unit test that re-produces the issue:
>
> > [Test]
> > public void CanUseSystemTransactionsToAbort()
> > {
> >    for (var i = 0; i < 200; i++)
> >    {
> >        using (ISession session = sessions.OpenSession())
> >        using (TransactionScope tx = new
> > TransactionScope(TransactionScopeOption.RequiresNew))
> >        {
> >            W s = new W();
> >            session.Save(s);
> >            session.Flush();
> >        }
> >    }
> > }
>
> > Cheers,
>
> > Iain
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "nhusers" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<nhusers%[email protected] 
> > >
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/nhusers?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to