2010-01-28 3 views
2

Je souhaite mapper deux classes m: n associées à l'aide de NHibernate. NH mapperait une association m: n simple dans une table de liens avec des contraintes de clé étrangère aux tables d'entités. Maintenant je veux attacher plus d'attributs à l'association comme vu sur cet exemple:Classe d'association dans NHibernate

lien d'image cassé; l'image enlevée

(et je veux NHibernate pour stocker ces attributs dans la table de liens)

lien d'image brisée; image supprimée

Ce diagramme UML montre comment "résoudre" la classe d'association pour la programmation. Jusqu'à présent, je l'ai fait moi-même et codé 3 classes Person, Book et PersonBookLink avec PersonBookLink ayant l'attribut returnDate. NHibernate est très bien avec la cartographie, mais je cherche une façon moins complexe de naviguer dans ce modèle.

Comment feriez-vous la cartographie dans NHibernate?

Répondre

2

Il n'y a pas de manière moins complexe. Une relation plusieurs-à-plusieurs avec des attributs supplémentaires est mappée en tant que deux relations un-à-plusieurs. Vous devrez décider quel côté gère la relation et définir l'attribut inverse dans votre mappage de l'autre côté afin que NHibernate n'essaie pas d'insérer l'enregistrement de lien deux fois. Je modéliserais cela comme une personne, un livre et un prêt et laisserais la personne contrôler la relation (la personne emprunte le livre). PS - J'utiliserais aussi ce projet comme une opportunité d'écrire une classe de bibliothécaire avec une méthode Shhhh(IEnumerable<Person> patrons).

+0

Également connu sous le nom de «relation objectivée». –

Questions connexes