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.
