2009-08-20 9 views
0

Pour nos appareils de test, nous utilisons NHibernate pour générer un schéma de base de données. Nous avons un cas légèrement étrange dans lequel une entité référence une autre entité mais nous ne souhaitons pas avoir de contrainte de clé étrangère (il devrait être possible de supprimer l'entité référencée afin qu'une clé étrangère ne puisse pas être utilisée).Nhibernate - Générer un schéma sans clé forign

Est-il possible de spécifier que le schéma généré n'a pas de clé étrangère pour une relation particulière?

+0

Si vous supprimez l'entité référencée, sûrement vous devez mettre à jour les ENTITES qu'il référence? Sans cela, vous brisez l'intégrité référentielle. –

+0

C'est l'intention. Dans ce cas particulier (et inhabituel), nous voulons pouvoir supprimer l'entité sans mettre à jour les entités qui la référencent. La recherche de clé étrangère doit échouer en mode silencieux. –

Répondre

1

Jay-

Si vous utilisez Fluent NHibernate, vous pouvez définir ce soit dans votre mise en œuvre de IHasManyConvention ou IReferenceConvention (si vous utilisez des conventions).

Cascade.SaveUpdate() doit propager les sauvegardes et les mises à jour, mais laisser les objets enfants orphelins lorsque les parents sont supprimés.

Dans les fichiers standards NHibernate HBM, je crois que l'étiquette d'un sac devrait ressembler à:

<bag cascade="save-update" name="EntityName"> ... </bag> 

MISE À JOUR: Voici un message d'information par Ayende sur le thème des orphelins objets enfants et les différences avec les valeurs en cascade .

http://bit.ly/bQDrv

Questions connexes