I ended up abandoning using guidcomb for the audit table as i think there's a bug when using them.
When using an Identifier as the PK on the Audit table instead, this definately worked. Note you don't need to Flush() as was mentioned in the docs. On May 25, 2:54 pm, Diego Mijelshon <[email protected]> wrote: > You are right, I just tried and it didn't save. > Try the following: > > public void OnPostInsert(PostInsertEvent e) > { > if (e.Entity is Audit) return; > var audit = new Audit{...}; > var childSession = e.Session.GetSession(EntityMode.Poco); > childSession.Save(audit); > childSession.Flush(); > } > > Diego > > On Tue, May 25, 2010 at 09:49, deejbee <[email protected]>wrote: > > > > > Yes, it's committing. I've sort of got round this issue by using an > > Identity column instead of a GuidComb as it was suggested in another > > post that this might be the issue. However I found that the > > PostInsertEvent was then being fired again (until a stack overflow) > > but this time with the Audit entity being passed in. I got round this > > by checking that the type of the entity, only creating an Audit object > > if it was not. > > > It still doesn't feel quite right as I thought the chilt session > > shouldn't cause the event to fire again. > > > On May 25, 12:36 pm, Diego Mijelshon <[email protected]> wrote: > > > Are you committing the parent transaction? > > > > Diego > > > > On Tue, May 25, 2010 at 05:06, deejbee <[email protected] > > >wrote: > > > > > Thanks Diego, I tried what you suggested (it makes perfect sense) but > > > > it doesn't insert the Audit record. I can see the Audit recordt in > > > > the child session but it doesn't commit. I've tried using the various > > > > FlushMode options but they don't seem to make any difference either. > > > > > Any suggestions? > > > > > On May 25, 2:28 am, Diego Mijelshon <[email protected]> wrote: > > > > > I suggest that you use IPost* events for auditing. > > > > > And use a child session for saving. Example: > > > > > > public class AuditEventListener : IPostInsertEventListener > > > > > { > > > > > public void OnPostInsert(PostInsertEvent e) > > > > > { > > > > > var audit = new Audit > > > > > { > > > > > CreatedBy = ... > > > > > ... > > > > > }; > > > > > e.Session.GetSession(EntityMode.Poco).Save(audit); > > > > > } > > > > > > } > > > > > > Diego > > > > > > On Mon, May 24, 2010 at 11:38, deejbee < > > [email protected] > > > > >wrote: > > > > > > > I'm implementing auditing of inserts so I've implemented > > > > > > IPreInsertEventListener and it's firing as I would expect however > > I'm > > > > > > trying to create a new Audit record in the same database with > > details > > > > > > of the record that was originally being created (via > > SaveAndFlush()). > > > > > > > An exception "Collection was modified; enumeration operation may > > not > > > > > > execute." is being thrown and the transaction is rolled back. I > > tried > > > > > > creating a child session for the audit record but that didn't seem > > to > > > > > > make any difference. Does anyone have an example how to do this or > > > > > > what I might be doing wrong? > > > > > > > public bool OnPreInsert(PreInsertEvent e) > > > > > > { > > > > > > > Audit audit = new Audit(); > > > > > > audit.CreatedBy = "somename"; > > > > > > audit.CreatedDateTime = DateTime.Now; > > > > > > <<others snipped>> > > > > > > > audit.Save(); > > > > > > > return false; > > > > > > } > > > > > > > Many Thanks > > > > > > > -- > > > > > > 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]> > > <nhusers%[email protected]<nhusers%[email protected]> > > > > > <nhusers%[email protected]<nhusers%[email protected]> > > <nhusers%[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]> > > <nhusers%[email protected]<nhusers%[email protected]> > > > > > . > > > > > For more options, visit this group athttp:// > > > > 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]> > > <nhusers%[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 athttp:// > > 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. > > -- > 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 > athttp://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.
