By the way, calling Session.Flush with "flush on commit" is a good indication that you are doing something wrong. You should be using an NHibernate transaction instead.
On Thu, Aug 26, 2010 at 5:52 AM, 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.
