Hi, is there any update? I have the same problem. I want to know if this is an update or a save operation in the SaveOrUpdateEventListener, too. Does anyone have ideas?
On Mon, Oct 13, 2008 at 11:52 PM, Oz <[email protected]> wrote: > > Thanks Will. I see what I can find and post anything interesting back > here for future reference. > > On Oct 13, 4:50 pm, "Will Shaver" <[email protected]> wrote: >> I haven't needed to do that, so I don't have a quick answer for you. At some >> level NH has to determine this, so see if you can figure out how this works. >> >> On Mon, Oct 13, 2008 at 1:56 AM, Oz <[email protected]> wrote: >> >> > Thanks for the response Will. >> >> > I see the problem now. In your example, you attach the listener to >> > the Save event and also to the SaveOrUpdate event. >> >> > In my code I attach one listener to the Save event and another >> > listener to the Update event (NOTE - nothing attached to >> > SaveOrUpdate). It seems that in this case the Save isn't called all >> > the way down the tree in the domain. >> >> > I tried changing my code to the same way as yours and it works, >> > however I need to have separate behaviours depending on whether a save >> > or update is happening. Is there a way of determining if we're doing >> > a save or an update when the SaveOrUpdate event fires? >> >> > On Oct 10, 6:28 pm, "Will Shaver" <[email protected]> wrote: >> > > I just double-checked and I am getting my event listener to pick up >> > > both parent and children for my domain. >> >> > > Be sure you're overriding both: >> >> > > configuration.EventListeners.SaveEventListeners = new >> > > ISaveOrUpdateEventListener[] { listener }; >> > > configuration.EventListeners.SaveOrUpdateEventListeners = new >> > > ISaveOrUpdateEventListener[] { listener }; >> >> > > My collections are mapped with inverse="true" and cascade="all" >> >> > > On Fri, Oct 10, 2008 at 10:10 AM, Oz <[email protected]> wrote: >> >> > > > Hi Will, >> >> > > > Consider this: >> >> > > > I have a class A which implements IAuditable, as discussed in my >> > > > original post, and class A holds a List collection of class B, which >> > > > also implements IAuditable. >> >> > > > When I save class A, the EventListener fires and I am able to set the >> > > > audit information on class A, similar to my original post, however the >> > > > EventListener doesn't then seem to fire when the save cascades down >> > > > into class B. >> >> > > > Do you have any ideas? >> >> > > > Thanks, >> >> > > > Mark >> >> > > > On 6 Oct, 16:06, "Will Shaver" <[email protected]> wrote: >> > > >> Could you set a "DeleteMe" column and have the triggers watch for that >> > and >> > > >> then delete the row? The problem is that once you delete something >> > with NH, >> > > >> the entity is no longer persistant, so changes to it are not sent to >> > the db. >> >> > > >> On Mon, Oct 6, 2008 at 5:38 AM, Oz <[email protected]> wrote: >> >> > > >> > Dear NHUsers, >> >> > > >> > I read your Gabriel Schenker's soft deletes article (http:// >> >> >www.nhforge.org/blogs/nhibernate/archive/2008/09/06/soft-deletes.aspx) >> > > >> > with great interest and it was very useful! I have a similar but >> > > >> > slightly different requirement which I'm having some trouble >> > > >> > implementing, and I wonder if you're able to offer some advice? >> >> > > >> > I need to actually do a physical delete from a table, but to update >> > > >> > the "ModifiedDate" and "ModifiedBy" fields on the object BEFORE >> > > >> > deletion. The reason I need to do this is that I have a trigger >> > that >> > > >> > will fire on deletions, and copy the row to a history table. I'd >> > like >> > > >> > the row in the history table to reference the actual deletion time >> > and >> > > >> > have the name of the person who deleted it. >> >> > > >> > At the moment, the code I have is as follows, although I have tried >> > > >> > various different options. >> >> > > >> > protected override void >> > > >> > DeleteEntity(NHibernate.Event.IEventSource session, object entity, >> > > >> > NHibernate.Engine.EntityEntry entityEntry, bool >> > > >> > isCascadeDeleteEnabled, >> > > >> > NHibernate.Persister.Entity.IEntityPersister persister, >> > > >> > Iesi.Collections.ISet transientEntities) >> > > >> > { >> > > >> > IAuditable auditable = entity as IAuditable; >> >> > > >> > if (auditable != null) >> > > >> > { >> > > >> > auditable.ModifiedDate = DateTime.Now; >> > > >> > auditable.ModifiedBy = "mark"; >> >> > > >> > CascadeBeforeDelete(session, persister, auditable, >> > > >> > entityEntry, transientEntities); >> > > >> > base.DeleteEntity(session, auditable, entityEntry, >> > > >> > isCascadeDeleteEnabled, persister, transientEntities); >> > > >> > CascadeAfterDelete(session, persister, auditable, >> > > >> > transientEntities); >> > > >> > } >> > > >> > else >> > > >> > { >> > > >> > base.DeleteEntity(session, entity, entityEntry, >> > > >> > isCascadeDeleteEnabled, persister, transientEntities); >> > > >> > } >> > > >> > } >> >> > > >> > The code above simply deletes the row, without propagating the >> > update >> > > >> > first. I've also tried doing a session.Update(...) before the >> > > >> > CascadeBeforeDelete to no avail. >> >> > > >> > I wonder if you could offer any suggestions! I'm quite new to >> > > >> > NHibernate, but appreciate its power and convenience :-) >> >> > > >> > Kindest regards, >> >> > > >> > Mark > > > -- Regards, Karron --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
