2017-02-27 102 views
2

我已經實現了級聯刪除的一對多代碼映射。我有與子實體關聯的文件。我想在子級聯刪除時自動刪除文件。 如何實施?NHibernate:c#級聯刪除操作

+1

也許你可以包含一些你已經嘗試過的代碼示例? –

回答

1

我發現NHibernate在配置級別支持Listeners。這並不完美,但總比沒有好。簡單的例子:

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); 
    } 
} 
+1

您也可以使用['IInterceptor'](http://nhibernate.info/doc/nhibernate-reference/events.html#objectstate-interceptors),從'EmptyInterceptor'派生。但這可能不會比[events]更好(http://nhibernate.info/doc/nhibernate-reference/events.html#objectstate-events)。 –