Ok

--
Fabio Maulo


El 02/09/2010, a las 20:57, Filip Zawada <[email protected]> escribió:

> I posted a message on nhusers but no-one replied. Maybe this
> group is a better choice since the post is related to the internals of NH.
> The main reason I'm putting it here is that I think the described behavior is 
> a bug, and I would like to first confirm it here before creating a JIRA 
> ticket.
>
>
>
> I'm trying to implement an IPostInsert/UpdateEventListener. What I
> want to achieve is sending two SQL update queries:
>
>
> void IPostUpdateEventListener.OnPostUpdate(PostUpdateEvent @event)
> {
>    /*
>     * Getting left and right ommited
>     */
>    @event.Session.CreateSQLQuery("update categories c set
> isbranchactive = 1 where c.lft >= :lft and c.rgt <= :rgt")
>                        .SetInt64("lft", left)
>                        .SetInt64("rgt", right)
>                        .ExecuteUpdate();
>
> }
>
> Nothing special. The problem is it blows up when commiting a
> transaction:
>
> [InvalidOperationException: Collection was modified; enumeration
> operation may not execute.]
>   System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource
> resource) +56
>   System.Collections.Generic.Enumerator.MoveNextRare() +58
>   System.Collections.Generic.Enumerator.MoveNext() +93
>   NHibernate.Engine.ActionQueue.ExecuteActions(IList list) +149
>   NHibernate.Engine.ActionQueue.ExecuteActions() +32
>
> NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource
> session) +253
>
> NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent
> event) +97
>   NHibernate.Impl.SessionImpl.Flush() +275
>   NHibernate.Transaction.AdoTransaction.Commit() +236
>
> I looked into the ExecuteActions(...) and replaced foreach enumeration
> with a regular for loop.
> Everything seems to work just fine. NH tests are passing (tested on 2.1.2).
>
> Now my question is: is the original behavior a bug. If yes, then is
> the proposed solution acceptable?
>
> I need this order of execution and cannot use Pre* Listeners
>
> Thanks,
> Filip

Reply via email to