Fluent NHibernate — сопоставление «один ко многим» с использованием 2 столбцов

У меня есть схема БД по строкам:

Продукт

  • 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 (в базе данных).


person Alex    schedule 13.01.2012    source источник
comment
product.id тоже не уникален?   -  person Firo    schedule 15.01.2012
comment
no- product.id и brand являются составными   -  person Alex    schedule 16.01.2012