2010-12-06 6 views
1

Angenommen, ich habe Produkte und Kategorien und jedes Produkt kann in mehr als einer Kategorie existieren. Wie kann ich verhindern, dass so etwas in meiner Datenbank endet? Muss ich es in meine Domain-Ebene codieren oder kann NHibernate damit umgehen?Wie erzwinge ich eine eindeutige Einschränkung für eine HasManyToMany-NHibernate-Beziehung?

Was ich nicht wollen,

Tabelle: ProductsCategories

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

Was ich

Tabelle Möchten Sie: ProductsCategories

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

Antwort

2

Y Sie müssen es in Ihre Domain-Ebene codieren, indem Sie Equals für die Objekte überschreiben und set-mapping für die Collections verwenden. Dadurch wird verhindert, dass die Sammlungen doppelte Elemente enthalten. Sie sollten der Datenbanktabelle auch eine eindeutige Einschränkung hinzufügen. NHibernate kann die eindeutige Einschränkung generieren, wenn Sie sie für die Schema-Generierung verwenden, aber ich habe kein Beispiel für Sie.

+0

danke, das hat funktioniert. –

Verwandte Themen