2010-06-19 3 views
0

Я использую monorail/activerecord и задавался вопросом, как вы обрабатываете добавление элементов во многих отношениях, когда таблица many to many имеет значение, кроме двух внешних ключей.Замок ActiveRecord HasAndBelongsToMany issue

Например, в классах Business and Amenity есть много разных отношений, поэтому есть таблица BusinessAmenity. Если таблица BusinessAmenity были только внешние ключи BusinessID и AmenityId, то вы можете сделать это:

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

А затем добавьте ассоциации, как это:

business.Amenities.Add(amenity; 

Однако, что если класс BusinessAmenity имеет еще один столбец называется «Значение», которое необходимо установить для каждой ассоциации? Вы больше не можете добавлять объект Amenity в Business.Amenities, потому что вам нужно установить свойство Value в BusinessAmenity.

Может кто-нибудь дать некоторое представление о том, как вы это делаете в ActiveRecord?

Спасибо! Джастин

ответ

2

Сопоставьте BusinessAmenity к своему BusinessAmenity классу, например (псевдокод):

[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;} 
} 

Это обсуждалось много раз на StackOverflow:

Смежные вопросы