Search code examples
c#nhibernatecascading-deletesnhibernate-mapping-by-code

NHibernate: c# action on cascade deletion


I've implemented one-to-many code mapping with cascade deletion. I have associated file with child entity. I want to delete file automatically on child cascade deletion. How can it be implemented?


Solution

  • I found out that NHibernate supports Listeners on Configuration level. It's not perfect, but better than nothing. Simplified example:

    var deleteListener = new DeleteListener();
    _configuration.SetListener(ListenerType.Delete, deleteListener);
    
    class DeleteListener : DefaultDeleteEventListener {
        public override void OnDelete(DeleteEvent e, ISet<object> transientEntities) {
            MyEntity entity = e.Entity as MyEntity;
            if (entity != null) {
                // code for file deletion
            }
            base.OnDelete(e, transientEntities);
        }
    }