Oh I feel like ISession s = e.Session.GetSession(EntityMode.Poco) is
the problem - I need to open a new session, I think.

I will post back if that is the solution.

On Mar 8, 4:43 pm, nicklang <[email protected]> wrote:
> Hi,
>
> I am implementing OnPreUpdate() and am inserting a new object in there
> (for the purpose of a simple commit/rollback system).
>
> When I call Save() on my original entity, I want to intercept, insert
> a new copied entity (one without IDs so that it will get INSERTED and
> not updated) - and finally, I want the original entity to NOT CHANGE.
>
> I saw the veto functionality based on the return value of the
> OnPreUpdate(), but this is saving the original entity and vetoing my
> new entity - this is the OPPOSITE of what I want.
>
> Any ideas of how veto the original entity and also insert the new
> entity?
>
> Thanks for any ideas/help!
>
> Here is the code:
>
> public class AuditEventListener : IPreUpdateEventListener
>     {
>         public bool OnPreUpdate(PreUpdateEvent e)
>         {
>             object entity = e.Entity;
>             Type entityType = e.Entity.GetType();
>             if (entity is IAuditableEntity)
>             {
>                 IAuditableEntity auditableEntity =
> (IAuditableEntity)entity;
>                 auditableEntity.Audit = new Audit();
>
>                 Type copyType = typeof(IAuditableCopy<>);
>                 Type[] types = new Type[] { entityType };
>                 Type genericCopyType =
> copyType.MakeGenericType(types);
>
>                 if (genericCopyType.IsInstanceOfType(entity))
>                 {
>                     MethodInfo castMethod =
> entityType.GetMethod("AuditableCopy");
>                     object newEntity = castMethod.Invoke(entity, new
> object[]{});
>
>                     using (ISession s =
> e.Session.GetSession(EntityMode.Poco))
>                     {
>                         s.Save(newEntity);
>                         s.Flush();  ///////////// NOT GETTING INSERTED
>                     }
>                 }
>             }
>             return true; //////// ORIGINAL ENTITY STILL GETS UPDATED
>         }
>     }

-- 
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