2010-06-19 7 views
0

J'utilise monorail/activationecord et je me demandais comment vous gérez l'ajout d'éléments dans une relation many to many lorsque la table many to many a une valeur en plus des 2 clés étrangères. Par exemple, les classes Business et Amenity ont une relation plusieurs à plusieurs, de sorte qu'il existe une table BusinessAmenity. Si la table BusinessAmenity n'avait les clés étrangères businessid et AmenityId alors vous pouvez le faire:Castle ActiveRecord HasAndBelongsToMany numéro

[HasAndBelongsToMany(typeof(Amenity), 
      Table = "BusinessAmenity", ColumnKey = "businessid", ColumnRef = "amenityid", Cascade = ManyRelationCascadeEnum.None, Lazy=true)] 
     public IList<Amenity> Amenities 
     { 
      get { return _amenities; } 
      set { _amenities = value; } 
     } 

Et puis ajoutez les associations comme ceci:

business.Amenities.Add(amenity; 

Cependant, si la classe BusinessAmenity a une autre colonne appelé "Valeur" qui doit être défini pour chaque association? Vous ne pouvez plus ajouter un objet Amenity à Business.Amenities car ce dont vous avez besoin pour définir la propriété Value dans BusinessAmenity. Est-ce que quelqu'un peut donner un aperçu de la façon dont vous faites cela dans ActiveRecord?

Merci! Justin

Répondre

2

Carte du BusinessAmenity à sa propre classe BusinessAmenity, par exemple (pseudo-code):

[ActiveRecord] 
class Business { 
    [PrimaryKey] int Id {get;set;} 
    [HasMany] ISet<BusinessAmenity> Amenities {get;set;} 
} 

[ActiveRecord]  
class Amenity { 
    [PrimaryKey] int Id {get;set;} 
    [HasMany] ISet<BusinessAmenity> Businesses {get;set;} 
} 

[ActiveRecord]  
class BusinessAmenity { 
    [BelongsTo] Amenity Amenity {get;set;} 
    [BelongsTo] Business Business {get;set;} 
    [Property] int Value {get;set;} 
} 

Cela a été discuté à plusieurs reprises sur stackoverflow:

Questions connexes