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.

Reply via email to