By themselves, NH transactions implicitly roll back when you don't explicitly commit.
Based on this behavior, my suspicion is that the NH transaction will vote for rollback unless you explicitly commit it. I don't know this for certain. On Wed, Aug 18, 2010 at 8:40 AM, Frans Bouma <[email protected]> wrote: > > I always commit the NH transaction. I'm not sure. Try it and see. > > Inside a transaction scope, all db transaction using objects > subscribe to a 'manager' which tells the transaction scope how the outcome > of their db transaction turned out: rollback or commit. When you commit a > db > transaction (through an nh transaction) it should vote for 'commit' at the > controlling transaction scope. > > At transactionscope complete, all controlled transactions' votes are > checked and if one wants to rollback, everything is rolled back or > committed. This is done by calling the subscribed managers that the > transactions can be committed or have to be rolled back. At that moment > NH's > code gets a call to commit or rollback. So if you call it beforehand, it > simply should vote for commit and do nothing else but wait for the scope's > final 'judgment' ;) > > FB > > > On Wed, Aug 18, 2010 at 6:59 AM, Jacob Madsen <[email protected]> wrote: > > > > > > "session.Transaction.Commit()" is invoked by the NH internals, when > > transactionScope.Complete() is invoked, right? > > > > > > On Wed, Aug 18, 2010 at 1:56 PM, Jacob Madsen <[email protected]> > wrote: > > > > > > Ahh.. great details! > > > > On Wed, Aug 18, 2010 at 1:53 PM, Fabio Maulo > > <[email protected]> wrote: > > > > > > First of all thanks to avoid the annoying > discussion > > about "I don't want use NH's transaction" and try it as I said you. > > > > In releasenote.txt under > > ** BREAKING CHANGES from NH1.2.1GA to NH2.0.0 > > you can find this > > * AutoFlush will not occur outside a transaction - > > Database transactions are never optional, all communication with the > > database must occur inside a transaction, whatever you read or write > data. > > > > The NH's transaction is, sorry to be redundant, the > > NH's transaction. You have to use it because NH need it to take in > account > > all operations under NH responsibility (it include cache, UoW and > > transactionscope). > > > > Because NH's transaction is not 1:1 with > DB-transaction > > the TransactionScope is not a substitute of NH's transaction. > > > > On Wed, Aug 18, 2010 at 8:37 AM, Jacob Madsen > > <[email protected]> wrote: > > > > > > Love the feature :-) > > > > Why do you also begin a nhibernate > transaction? > > > > > > > > > > On Wed, Aug 18, 2010 at 1:08 PM, Fabio > Maulo > > <[email protected]> wrote: > > > > > > > > using(var transactionScope = new > > TransactionScope()) > > using(var session = > > sessionFactory.OpenSession()) > > using(var tx = > > session.BeginTransaction()) > > { > > var someEntity = > > session.Get<SomeEntityType>(someId); > > > > someEntity.Name = "bla"; > > .... > > transactionScope.Complete(); > > > > > > NH will use autodirty check > > > > > > > > On Wed, Aug 18, 2010 at 7:53 AM, > Jacob > > Madsen <[email protected]> wrote: > > > > > > So I do not need to make an > > explicit Update(someEntity) call? > > > > using(var transactionScope > = > new > > TransactionScope()) > > using(var session = > > sessionFactory.OpenSession()) > > { > > var someEntity = > > session.Get<SomeEntityType>(someId); > > > > someEntity.Name = "bla"; > > > > > session.Update(someEntity); // I > > want to avoid these explicit Update-calls by tracking the (dirty) > entities > > in a session and do a single call to a "void SaveChanges()" method. The > > "SaveChanges" method should do the updating on the entities in a session. > I > > still want to explicitly insert new entities with > session.Save(newEntity), > > which I abstract and in a method called "Store". > > > > > transactionScope.Complete(); > > } > > > > > > On Tue, Aug 17, 2010 at > 10:30 AM, > > Dwarrel <[email protected]> wrote: > > > > > > Yes, you would not > want to > > use it for that reason, flush will do that > > automatically. > Unfortunately > > I do sometimes crave for a way to see > > which objects are > in > the > > session. Sometimes I would want to evict all > > objects of a > certain > type > > from the session cache. This if you have a > > longer running > session and > > someone else has updated the DB values. > > There is no known > way of > > evicting say all purchase info and then re- > > run a query to load > the > > relevant ones. If you don't evict them then > > you get a strange > mix of > > stale and current information as your query > > result (even when > having the > > version number available!) > > > > > > On Aug 16, 3:33 pm, > Jason > > Dentler <[email protected]> wrote: > > > Automatic dirty > checking > > will take care of this when the session is flushed > > > (which normally > happens > > when you commit a transaction) > > > > > > > > > > > > > > On Mon, Aug 16, > 2010 at > > 4:27 AM, Jacob Madsen <[email protected]> wrote: > > > > Hi all, > > > > > > > Is there a > method to > > retrieve references to all entities known by a > > > > session > > > > > > > using (var > session = > > sessionFactory.OpenSession()) > > > > { > > > > var entity = > > session.Get<SomeType>(someId); // "entity" is now > > > > known by the > session > > > > .... > > > > var > allKnownEntities > > = /* here I want to retrieve all entities > > > > known/attached > to a > > session */ > > > > .... > > > > } > > > > > > > I want to > implement a > > "void SaveChanges()" method that will Update all > > > > modified > entities known > > by a session. > > > > > > > Cheers! > > > > > > > -- > > > > 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]> > > <mailto:nhusers%[email protected]<nhusers%[email protected]> > > > > <nhusers%[email protected]<nhusers%[email protected]> > > <mailto:nhusers%[email protected]<nhusers%[email protected]>> > -> > > > > > > . > > > > For more > options, visit > > this group at > > > > > > > >http://groups.google.com/group/nhusers?hl=en.- Hide quoted text - > > > > > > - Show quoted > text > - > > > > -- > > > > 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]> > > <mailto:nhusers%[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]<nhusers%[email protected]> > > <mailto:nhusers%[email protected]<nhusers%[email protected]>> > . > > For more options, visit > this > group > > at http://groups.google.com/group/nhusers?hl=en. > > > > > > > > > > > > -- > > Fabio Maulo > > > > > > > > > > > > -- > > > > 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]> > > <mailto:nhusers%[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]<nhusers%[email protected]> > > <mailto:nhusers%[email protected]<nhusers%[email protected]>> > . > > For more options, visit this group at > > http://groups.google.com/group/nhusers?hl=en. > > > > > > > > > > > > -- > > Fabio Maulo > > > > > > > > > > > > -- > > 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]> > > <mailto:nhusers%[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]<nhusers%[email protected]> > > <mailto:nhusers%[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]<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]<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.
