Thanks, I did find cases of this in our code, but I'm not sure if this explains all of the unnecessary updates -- I'll investigate further.
Peter On Monday, April 7, 2014 6:10:35 AM UTC-4, Rippo wrote: > > Also it may help to search google for “ghost updates nhibernate” > > > > > https://www.google.co.uk/search?q=ghost+u%5Bdates+nhibernate&oq=ghost+u%5Bdates+nhibernate&aqs=chrome..69i57j0.7383j0j7&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8 > > > > > Rippo > > > > *From:* [email protected] <javascript:> [mailto: > [email protected] <javascript:>] *On Behalf Of *Vinicius G. D. > Menezes > *Sent:* 05 April 2014 14:15 > *To:* [email protected] <javascript:> > *Subject:* Re: [nhusers] Re: How to prevent DB update if value not changed > > > > Hi Peter, > > I've been working with different projects at the company I work for and I > could hint you that the updates also depend on the lifecycle of your > ISession. Since ISession can only work for one Thread, you might be in a > position of creating and destroying it too early, therefore making > nhibernate update your objects without necessity. > > Have you tried implementing IComparable, overding .GetHashCode() and > .Equals() methods and interfaces for your objects? NHibernate compares the > objects to track it's differences, sometimes a reference difference can > change your object Hashcode making NHibernate "think" it's an update. > > Generally Value Objects will need that kind of implementation I suggested. > Would you be able to detail your problem a bit more? > > Vinicius Menezes > > > > On Mon, Mar 17, 2014 at 7:25 AM, Carel Blumenstock > <[email protected]<javascript:>> > wrote: > > We are using fluent mappings, in order to have changes to child lists not > trigger a version update of the parent we had to state as such in mapping > like Not.OptimisticLock(), hth > > Op maandag 10 maart 2014 20:12:27 UTC+1 schreef Peter V: > > We're using NHibernate where the DB can be updated by either a user (via > GUI) or external systems (via background message handlers). Our DB schema, > by the way, uses a lot of joins. > > > > So what can happen is, we can get multiple background messages that > provide exactly the same information, and so trigger repeated writes to the > DB across all the joined tables that don't actually change anything (other > than the version). > > > > What I'm trying to figure out is, for performance reasons, is there a way > to prevent NH from updating the DB if a value hasn't changed? > > > > So when an object's setter is called, NH should first read the current > value from the DB, and if the new value is the same, do nothing; > if different or not found, then save/update it. > > > > Thanks, > Peter > > > > P.S. I was looking through other postings that talked > about Session.Merge(): > > - > https://groups.google.com/forum/#!searchin/nhusers/saveorupdate$20merge/nhusers/6_8uwwl5KX4/11Pef_FreXgJ > > - > http://stackoverflow.com/questions/4725785/stop-hibernate-from-updating-collections-when-they-have-not-changed > > > > ...and I thought Merge() would do what I needed. > > > > But reading some more, I see that Merge is really more about whether the > instance is already associated with the current session. (Merge will... > "Copy the state of the given object onto the persistent object with the > same identifier. If there is no persistent instance currently associated > with the session, it will be loaded.") > > > > So I'm confused - will Merge() do what I need? Or am I looking in the > wrong place? > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <javascript:>. > To post to this group, send email to [email protected] <javascript:> > . > Visit this group at http://groups.google.com/group/nhusers. > For more options, visit https://groups.google.com/d/optout. > > > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <javascript:>. > To post to this group, send email to [email protected] <javascript:> > . > Visit this group at http://groups.google.com/group/nhusers. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.
