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.
