0

J'ai récemment commencé à utiliser Fluent Nhibernate pour ma couche de données et j'ai rencontré un problème. Chaque fois que je veux supprimer un enregistrement qui a plusieurs contraintes de clé étrangère, je dois créer une autre classe juste pour représenter cette entité de base de données. Cela signifie que pour quelque chose comme un enregistrement utilisateur, qui a des relations avec de nombreuses autres tables, je dois créer quelque chose comme 10 classes différentes que je n'utiliserai jamais à d'autres fins. Au moins, c'est ma compréhension de la façon dont les choses fonctionnent.Existe-t-il un moyen de supprimer toutes les entités étrangères lorsque je supprime un enregistrement en utilisant NHibernate?

Y at-il un moyen pour moi de supprimer tous ces enregistrements sans avoir à les mapper. Par exemple, en utilisant l'exemple utilisateur, un utilisateur peut avoir plusieurs rôles, départements, adresses e-mail, numéros de téléphone, adresses, etc. Je voudrais supprimer tous ces enregistrements, mais ne pas avoir à tous les cartographier dans les classes Nhibernate.

Y a-t-il une propriété que je peux définir sur mon UserMapping pour accomplir cela?

Merci!

+0

Vous pouvez utiliser la magie. C'est la meilleure façon d'obtenir un cadre pour deviner votre intention pendant que vous essayez de le cacher. Plus d'informations sur http://hogwarts.ac.uk –

Répondre

1

Si ces entités ne sont pas mappées, NHibernate ne peut pas les connaître. Mais vous pouvez choisir une de ces alternatives:

  • Mettre en place FK cascades at the database level (si votre base de données supporte)
  • Utilisez un déclencheur de base de données pour coder manuellement la cascade (si votre base de données prend en charge les déclencheurs)
  • Utilisez un IPostDeleteEventListener (similaire à un déclencheur de base de données mais au niveau de NHibernate) pour coder manuellement la cascade.
+0

Merci pour la réponse. J'espérais vraiment qu'il y aurait une sorte de magie sous-le-capuchon qui lirait le schéma et castrerait la suppression si nécessaire, mais oui je peux voir que c'est irréaliste. Je suppose que ce que je vais devoir faire est de créer les classes nécessaires et de cartographier seulement les propriétés que je dois. – bsayegh

Questions connexes