2010-12-06 31 views
1

En supposant que j'ai des produits et des catégories et que chaque produit peut exister dans plus d'une catégorie, comment puis-je éviter de finir avec quelque chose comme ça dans ma base de données? Dois-je le coder dans ma couche de domaine ou NHibernate peut-il le gérer?Comment appliquer une contrainte unique à une relation HasManyToMany NHibernate?

Ce que je ne veux pas

Tableau: ProductsCategories

ProductId CategoryId 
--------- ---------- 
12   23 
12   24 
12   23 
12   23 

Ce que je ne veux

Tableau: ProductsCategories

ProductId CategoryId 
--------- ---------- 
12   23 
12   24 

Répondre

2

Y Vous devez le coder dans votre couche de domaine en remplaçant Equals sur les objets et en utilisant le mappage d'ensemble pour les collections. Cela empêchera les collections de contenir des éléments en double. Vous devez également ajouter une contrainte unique à la table de base de données. NHibernate peut générer la contrainte unique si vous l'utilisez pour la génération de schéma mais je n'ai pas d'exemple pour vous.

+0

merci, cela a fonctionné. –