2017-02-27 4 views
2

J'ai implémenté le mappage de code un-à-plusieurs avec une suppression en cascade. J'ai associé le fichier avec l'entité enfant. Je veux supprimer le fichier automatiquement sur la suppression de cascade enfant. Comment peut-il être implémenté?NHibernate: action C# sur la suppression de cascade

+1

Peut-être que vous pourriez inclure des exemples de code que vous avez essayé? –

Répondre

1

J'ai découvert que NHibernate prend en charge les auditeurs au niveau de la configuration. Ce n'est pas parfait, mais mieux que rien. Exemple simplifié:

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

Vous pouvez aussi utiliser un ['IInterceptor'] (http://nhibernate.info/doc/nhibernate-reference/events.html#objectstate-interceptors), dérivé de' EmptyInterceptor'. Mais ce ne serait probablement pas mieux que [événements] (http://nhibernate.info/doc/nhibernate-reference/events.html#objectstate-events). –