Thanks for reminding me that I had not built a unit test for a class where I overrode Equals :)
John Davidson On Wed, Feb 24, 2010 at 12:08 PM, Fabio Maulo <[email protected]> wrote: > In many cases the GhostBuster should be the standard-test to test basic > CRUD of each entity, believe me > > > 2010/2/24 Billy Stack <[email protected]> > >> Solved the problem. >> >> We have an IUserType to map DateTimeOffset properties in UTC in our >> code to columns of datetime (No datetimeoffset type exists in SQL >> Server 2005) >> The Equals method was implemented incorrectly. >> >> Every time the Equals method is called by NH to check for dirty >> objects, the equals method was returning false even if though the >> DateTimeOffset values were the same. >> >> With this fix in place, the session when autoflushed now only updates >> entities that were updated, and does not update entities that were not >> updated! >> >> On Wed, Feb 24, 2010 at 3:27 PM, Billy Stack <[email protected]> wrote: >> > I have traced the call even when the update is unexpected: >> > >> > public override bool OnFlushDirty(object entity, object id, object[] >> > currentState, object[] previousState, string[] propertyNames, >> > NHibernate.Type.IType[] types) >> > { >> > return base.OnFlushDirty(entity, id, currentState, previousState, >> > propertyNames, types); >> > } >> > >> > I inspected all currentState and previousState and they are exactly the >> same. >> > Why would NHibernate attempt to perform OnFlushDirty when "no" state >> > whatsoever has changed? >> > >> > On Wed, Feb 24, 2010 at 1:22 PM, Fabio Maulo <[email protected]> >> wrote: >> >> You have Ghosts. >> >> >> http://fabiomaulo.blogspot.com/2008/10/how-test-your-mappings-ghostbuster.html >> >> A ghost may appear because, wrong mapping, stale data (null in DB and >> not >> >> nullable property) and so on >> >> >> >> 2010/2/24 Billy Stack <[email protected]> >> >>> >> >>> All, >> >>> >> >>> I have the following scenario: >> >>> >> >>> Start Unit of work (SessionFactory.OpenSession()) >> >>> >> >>> Get collection of Entities (e.g. 10 in size) from db >> >>> >> >>> Update only one entity >> >>> >> >>> Dispose the Unit of work (Where we call ISession.Flush()) >> >>> >> >>> >> >>> The problem I am finding is that 10 update statements are generated - >> >>> one for each entity in the collection, even though I only actually >> >>> updated one entity. >> >>> >> >>> How does NHibernate think that objects in the collection are dirty >> >>> even though they weren't updated? >> >>> I am using nullable types, is this the issue? >> >>> Ref: >> >>> >> http://stackoverflow.com/questions/34852/nhibernate-session-flush-sending-update-queries-when-no-update-has-occurred >> >>> >> >>> Is this the right way to be using the Session, should I be calling >> >>> Session.SaveOrUpdate() ? >> >>> >> >>> Any help greatly appreciated... >> >>> >> >>> -- >> >>> 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. >> >>> >> >> >> >> >> >> >> >> -- >> >> 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]> >> . >> >> 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. >> >> > > > -- > 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]> > . > 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.
