<trying again, last post didn't go through>

Thanks. Yes, the event model is confusing with timing and state.
Documentation by the devs would go a long way! :)

So anyway, what would be a more appropriate event to hook off in that case?

For the flush event, what is confusing is inside NH's source code, in 
AbstractFlushingEventListener.cs, FlushEntities() you have comments like

    // 1. detect any dirty entities 
    // 2. schedule any entity updates
    // 3. search out any reachable collections
    protected virtual void FlushEntities(FlushEvent @event)
    {
        ...
    }

Thanks
Sid


On Tuesday, November 19, 2013 7:02:42 AM UTC-8, Gunnar Liljas wrote:
>
> There may be a need to intercept the flushing, and NH allows it. There are 
> other events which will only fire for modified entities. 
>
> It's certainly possible that there is a case for more events, or even a 
> revamped event system, but in this case I think that the "problem" is due 
> to a misunderstanding of the term "Flush". It doesn't mean "save modified 
> objects", it means "Inspect *all entities attached to the session*, see 
> if they are changed, removed or added, honor any cascading rules, and 
> invoke the steps necessary to ensure that the database is in sync".
>
> /G
>
>
> 2013/11/19 Ricardo Peres <[email protected] <javascript:>>
>
>> Gunnar,
>>
>> The problem, as I see it, is: is there a need to fire *externally* the 
>> flush entity event? Why not let it happen internally, and only fire this, 
>> saveorupdate, and the others, externally for modified entities?
>>
>> RP
>>
>> On Tuesday, November 19, 2013 1:15:11 PM UTC, Gunnar Liljas wrote:
>>
>>> That would be more of a naming problem, IMO. The flush event is what 
>>> causes entities to be flushed, and flushing is what causes them to be dirty 
>>> checked. The events does what they are supposed to do, but maybe not what 
>>> everyone expects them to do, based on their names.
>>>
>>> /G
>>>
>>>
>>> 2013/11/19 Ricardo Peres <[email protected]>
>>>
>>> This is, IMHO, a problem with how NHibernate implements events. I once 
>>>> discussed this with Fabio (a long, long time ago), back then, I was 
>>>> questioning why is the SaveOrUpdate event fired even for unchanged 
>>>> entities. This is another version of the same problem, I guess: 
>>>> FlushEntity 
>>>> is also fired for unchanged entities. The problem with this is that we 
>>>> first need to check, before we touch the target entity, if it is changed.
>>>> In my view of things, these events should only be fired upon changed 
>>>> entities.
>>>>
>>>> RP
>>>>
>>>>
>>>> On Tuesday, November 19, 2013 7:29:32 AM UTC, Gunnar Liljas wrote:
>>>>
>>>>> You're testing the wrong thing. The entity will be flushed. That 
>>>>> doesn't mean that it will be updated. It means that it will be dirty 
>>>>> checked and *possibly* updated.
>>>>>
>>>>> /G
>>>>>
>>>>>
>>>>> 2013/11/18 Sid Shetye <[email protected]>
>>>>>
>>>>>>  Hi folks,
>>>>>>
>>>>>> I've created a self-sufficient test project in GIT at 
>>>>>> https://github.com/sidshetye/NHMarkEntityClean which demonstrates 
>>>>>> this issue. The local database etc is all setup, you can simply run it 
>>>>>> and 
>>>>>> see the phantom FlushEvent being called on the entity when it shouldn't 
>>>>>> have (because we just reset it properly). 
>>>>>>
>>>>>> The user-level listener code at https://github.com/sidshetye/N
>>>>>> HMarkEntityClean/blob/master/NHListeners.cs seems simple to me - not 
>>>>>> sure what the problem is ... because OnFlushEntity() still gets called 
>>>>>> on 
>>>>>> this now "unchanged" entity. Either we're not resetting the entity 
>>>>>> properly 
>>>>>> or NHibernate's clean/dirty check has a bug in it.
>>>>>>
>>>>>> Any ideas on this puzzle?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>  -- 
>>>>>> 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/groups/opt_out.
>>>>>>
>>>>>
>>>>>  -- 
>>>> 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/groups/opt_out.
>>>>
>>>
>>>  -- 
>> 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/groups/opt_out.
>>
>
>

-- 
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/groups/opt_out.

Reply via email to