У меня есть схема БД в соответствии с:
Product
- ID
- ProductName
- Описание
- StoreBrand
ProductVariation
- VariationID
- ProductID
- Размер
- StoreBrand
- Цена
Классы, как и ожидалось, выглядят примерно так:
public class Product
{
public virtual int ID { get; set; }
public virtual string ProductName { get; set; }
public virtual string Description { get; set; }
public virtual string StoreBrand { get; set; }
public virtual IEnumerable<ProductVariation> Variations { get; set; }
}
public class ProductVariation
{
public virtual int VariationID { get; set; }
public virtual int ProductID { get; set; }
public virtual Product Product {get; set;}
public virtual string Size { get; set; }
public virtual double Price { get; set; }
}
У меня есть такие классы отображения:
public class ProductMapper : ClassMap<Product>
{
public ProductMapper()
{
Id(x => x.ID);
Map(x => x.ProductName);
Map(x => x.Description);
Map(x => x.StoreBrand);
HasMany(x => x.Variations)
.KeyColumn("ProductID");
}
}
public class ProductVariationMapper : ClassMap<ProductVariation>
{
public ProductVariation()
{
Id(x => x.ID);
Map(x => x.ProductID);
Map(x => x.Size);
Map(x => x.Price);
References(x => x.Product)
.Column("ProductID");
}
}
Это вид работы ...
Однако мне нужно связать Product.Brands вместе с ProductVariation.Brands... (и наоборот)
Таким образом, при запросе Product возвращается список его ProductVariations для этого бренда ... (Обратите внимание, ProductVariation не имеет свойства в классе, но имеет столбец для сопоставления)
ProductVariation.ID не является уникальным.Ключом являются ProductVariation.ID и ProductVariation.Brand (в базе данных)