I don't have the option of using a nhibernate transaction in my
scenario.
NHibernate has support for transactionscope so it should enlist in the
transaction.

On Aug 26, 12:52 pm, Jason Dentler <[email protected]> wrote:
> First, you must use an NHibernate transaction for all database interaction.
> TransactionScope is not a substitute.
>
> Second, TransactionScope should only be used when you need to coordinate
> more than one resource. Even then, you should still use an NHibernate
> transaction as well.
>
> Third, TransactionScope allows each resource to vote whether the transaction
> should be rolled back or committed. If everyone votes commit, then it's
> committed. When you use a real NH transaction, you can control which way
> NHibernate will vote.
>
> On Thu, Aug 26, 2010 at 1:12 AM, MixMasta <[email protected]> wrote:
> > I am using a .NET transaction scope and running the following to
> > verify transaction commits/rollbacks
> > Using 2.1 nhibernate talking to SQL server db.
>
> > var b1 = new Person {Email = "[email protected]", Username = "art"};
> > using (var session = NHibernateSession.CurrentFor("MyDatabase"))
> > {
> >      session.Save(b1);
> >      session.Flush();
> >  }
> > //Writes b1 away to database
>
> > using (var tx = new TransactionScope())
> > {
> >     using (var session = NHibernateSession.CurrentFor("MyDatabase"))
> >     {
> >          var b2 = (Person)session.Load(typeof(Person), b1.Id);
> >          b2.Username = "art1234";
> >          session.Flush();
> >      }
> >       tx.Complete();
> > }
>
> > using (var session = NHibernateSession.CurrentFor("MyDatabase"))
> > {
> >     var b3 = (Person)session.Load(typeof(Person), b1.Id);
> >     Assert.IsTrue(b3.Username == "art");
> > }
>
> > If I leave the session.Flush() uncommented the transaction commits
> > even if I have the tx.Complete() commented out - I was expecting the
> > transaction scope to decide whether to commit those changes. If I
> > comment out session.Flush() and don't set tx.Complete() then the
> > transaction rolls back as expected.
>
> > My guess is that session.Flush creates its own implicit transaction
> > and commits it and ignores the current .NET transaction scope.
>
> > Thanks
>
> > --
> > 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