2017-02-27 150 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)。 –