Make sure that your session is created AFTER the transactionscope.
On Fri, Apr 13, 2012 at 12:56 PM, 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.
>
>
--
Ramon