2009-09-29 7 views
1

Ceci est peut-être une question facile que je n'arrive pas à dépasser.FluentNHibernate Lookup Table

J'ai créé une classe "Product" qui a une liste de "Accessoires". Chaque "accessoire" est juste un autre produit référencé par une table de recherche.

Tableau configuration:

Product 
------- 
ProductID int 
Name varchar(200) 

AccessoryProduct 
---------------- 
ID int 
ParentProductID int 
ChildProductID int 

Je voudrais être en mesure d'accéder à cette liste d'accessoires d'une manière telle que:

foreach(Product p in product.Accessories) 
string s = p.Name; 

La partie que je suis perplexe sur le FluentNHibernate mappage pour cette recherche. Au sein de ma classe ProductMap, je le mappage suivant:

Id(x => x.ProductID); 
Map(x => x.Name); 
HasMany(x => x.Accessories) 
.Table("AccessoryProduct") 
.KeyColumn("ParentProductID") 
.Cascade.None() 
.Inverse() 
.LazyLoad(); 

Cela crée actuellement une requête qui recherche « ParentProductID » dans la table de produit à la place de la table de recherche (AccessoryProduct).

Y a-t-il une méthode simple qui me manque pour permettre un mappage fluide d'une table de correspondance?

Toute aide est appréciée, même si elle implique le mappage xml. Je devrais être capable de comprendre le côté courant.

Répondre

1

Vous avez besoin d'une relation plusieurs-à-plusieurs.

Essayez:

HasManyToMany(x => x.Accessories) 
.Table("AccessoryProduct") 
.ParentKeyColumn("ParentProductID") 
.ChildKeyColumn("ChildProductID") 
.Cascade.None() 
.Inverse() 
.LazyLoad(); 
Questions connexes