2017-02-27 6 views
2

캐스케이드 삭제를 사용하여 일대 다 코드 매핑을 구현했습니다. 파일에 하위 엔티티를 연결했습니다. 하위 캐스케이드 삭제시 자동으로 파일을 삭제하고 싶습니다. 어떻게 구현할 수 있습니까?NHibernate : 캐스케이드 삭제에 대한 C# 액션

+1

시도한 코드 예제를 포함 할 수 있습니까? –

답변

1

NHibernate가 Listeners on Configuration 레벨을 지원한다는 것을 알게되었습니다. 완벽하지는 않지만 아무것도없는 것보다 낫다. 단순화 된 예 :

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

EmptyInterceptor에서 파생 된 ['IInterceptor'] (http://nhibernate.info/doc/nhibernate-reference/events.html#objectstate-interceptors)도 사용할 수 있습니다. 그러나 그것은 아마도 [이벤트] (http://nhibernate.info/doc/nhibernate-reference/events.html#objectstate-events)보다 좋지 않을 것입니다. –