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].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to