NHibernate transactions will enlist in ambient transactions. And you **must** use transactions for NH data access. Try that and tell us if it works.
Diego On Thu, Apr 15, 2010 at 11:55, Iain <[email protected]> wrote: > 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]> > <nhusers%[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]<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.
