2010-08-21 5 views
2

J'ai un objet produit qui contient 2 collections, accessoires et consommateurs. Les consommateurs se rapportent à un accessoire, la liste des produits qui le consomment. Dans la base de données, j'ai une relation plusieurs à plusieurs pour ces collections qui est implémentée en tant que table de liaison Product_Accessory. Dans la cartographie j'ai créé un grand nombre à plusieurs d'une façon pour les accessoires et l'autre façon pour les consommateurs:Trouvé des références partagées à une collection

 mapping.HasManyToMany<oProduct>(x => x.Accessories) 
      .Table("Product_Accessory") 
      .Cascade.SaveUpdate() 
      .ParentKeyColumn("ProductId") 
      .ChildKeyColumn("AccessoryId") 
      .AsBag(); 

     mapping.HasManyToMany<oProduct>(x => x.Consumers) 
      .Table("Product_Accessory") 
      .Cascade.SaveUpdate() 
      .ParentKeyColumn("AccessoryId") 
      .ChildKeyColumn("ProductId") 
      .AsBag(); 

Tout cela semble très logique, mais NHibernate me donne une erreur de références partagées Trouvé à une collection parce qu'il ya deux listes de produits.

Est-ce que ce motif est possible avec nHibernate? Quel est le meilleur moyen d'y parvenir?

Merci

Phil

+0

Y a-t-il une raison pour laquelle vous * devez * utiliser la même table de jointure pour les deux collections? Ma première pensée serait d'utiliser deux séparés. – DanP

+0

Eh bien, vous pourriez utiliser 2 jointures mais le point entier de la table est de générer un enregistrement pour les accessoires et les consommateurs –

Répondre

3

J'ai résolu le problème, j'ai eu une fonction générique qui installait toutes les collections de produits et la création d'une référence circulaire.

Questions connexes