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