2010-11-26 14 views
0

J'essaie de créer un mappage pour le problème suivant. Un ticket peut avoir plusieurs clients et un client peut être associé à plusieurs tickets.Enregistrement d'informations supplémentaires avec la collection Many To Many

i ont ces applications: Case

Map(x => x.CaseNumber); 
     References(x => x.Status).Cascade.All(); 
     HasManyToMany<Client>(x => x.Clients) 
     .Table("CaseToClient") 
     .Access.CamelCaseField(Prefix.Underscore) 
     .Cascade.SaveUpdate() 
     .LazyLoad(); 

Maintenant, mon CaseToClient Table se compose de CASE_ID et CLIENT_ID ce que je veux est une autre colonne dans la table dans un Boolen du client est pertinent pour le cas. Comment puis-je ajouter la colonne pour que je puisse écrire la propriété?

+2

cette question a été posée au début de cette année: http://stackoverflow.com/questions/2281648/how-to-add-extra-field-in-the-manytomany-generated-table-with-fluentnhibernate – Marijn

+0

et bien avant cela aussi: http://stackoverflow.com/questions/889513/nhibernate-many-to-many-mapping-additional-column-in-the-mapping-table http://stackoverflow.com/questions/166426/ tables-supplémentaires-dans-nhibernate-many-to-many-relations-tables http://stackoverflow.com/questions/472052/many-to-many-mapping-with-extra-columns-in-join-table –

Répondre

5

N'utilisez pas plusieurs à plusieurs, utilisez deux mappages un-à-plusieurs.

Créez une entité distincte pour ClientCase, qui référence à la fois Case et Client et possède également votre propriété boolean.

De NHibernate In Action, la page 193:

« nous évitons l'utilisation de nombreux à plusieurs associations parce qu'il ya presque toujours d'autres informations qui doivent être attachés aux liens entre instances associées; le meilleur moyen de représenter cette information est via une classe d'association intermédiaire . "