the integration is that the NH's transaction enlist itself in the TransactionScope
On Fri, Apr 13, 2012 at 7:56 AM, John T <[email protected]> wrote: > Hi group, > > so I've discovered that NHibernate does not integrate at all well with the > Ambient Transaction. In fact, when using NHibernate within a > TransactionScope, one would be forgiven for thinking it doesn't integrate > at all. > > What should be the correct usage: > > public void Foo() > { > ISession session = null; // get session from wherever > > using (var transactionScope = new TransactionScope()) > { > session.Save(new PersistableObject { ArbitraryProperty = "a value" }); > transactionScope.Complete(); > } > } > > is completely useless. What you actually have to do is: > > public void Foo() > { > ISession session = null; // get session from wherever > > using (var transactionScope = new TransactionScope()) > using (var transaction = session.BeginTransaction()) > { > session.Save(new PersistableObject { ArbitraryProperty = "a value" }); > transaction.Commit(); > transactionScope.Complete(); > } > } > > So the fact that NHibernate has any integration with the Ambient > Transaction seems completely pointless. > > Now, I've looked (only cursory thus far) through the NHib src and have > noted a few areas of interest wrt to integrating with the Ambient > Transaction. But I want to ask if anyone has tried this already, and hit > any barriers along the way? > > Regards, > John. > > -- Fabio Maulo
