Свободное владение nHibernate - Как сопоставить неключевой столбец в соединительной таблице? - PullRequest
1 голос
/ 09 июня 2010

Взяв пример, представленный на веб-сайте Fluent nHibernate, мне нужно немного его расширить:

альтернативный текст http://wiki.fluentnhibernate.org/images/2/24/FirstProjectSchema.png

Мне нужно добавить столбец «Количество» вМагазин товаров, стол.Как бы я отобразил это, используя nHibernate?

Для данного сценария приведен пример сопоставления, но я не уверен, как получить столбец Количество для сопоставления со свойством класса Product:

public class StoreMap : ClassMap<Store>
{
  public StoreMap()
  {
    Id(x => x.Id);
    Map(x => x.Name);
    HasMany(x => x.Employee)
      .Inverse()
      .Cascade.All();
    HasManyToMany(x => x.Products)
     .Cascade.All()
     .Table("StoreProduct");
  }
}

1 Ответ

1 голос
/ 09 июня 2010

Одним из предложений было бы не использовать отображение hasManyToMany и иметь отдельный класс отображения для StoreProduct, который является подклассом продукта.

Новое отображение магазина

public class StoreMap : ClassMap<Store>
{
  public StoreMap()
  {
    Id(x => x.Id);
    Map(x => x.Name);
    HasMany(x => x.Employee)
      .Inverse()
      .Cascade.All();
    HasMany(x => x.Products)
     .Cascade.All();
  }
}

NBВместо этого вместо HasManyToMany установлено значение HasMany.

Новое сопоставление подклассов для Store Store

public class StoreProductMap : SubclassMap<StoreProduct>
{
   References(x=>x.Store);

   Map(x=>x.Quantity);
}

Новая сущность StoreProduct

public class StoreProduct : Product
{
    public virtual Store Store {get;set;}
    public virtual int Quantity {get;set;}
}

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...