У меня есть схема БД по строкам:
Продукт
- ID
- Наименование товара
- Описание
- Магазинбренд
Вариант продукта
- Идентификатор варианта
- Код товара
- Размер
- Магазинбренд
- Цена
Классы, как и ожидалось, выглядят примерно так:
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 (в базе данных).