【问题标题】:Fluent nHibernate - How to map a non-key column on a junction table?Fluent nHibernate - 如何在联结表上映射非键列?
【发布时间】:2010-06-09 04:05:41
【问题描述】:

以 Fluent nHibernate 网站上提供的示例为例,我需要稍微扩展一下:


(来源:fluentnhibernate.org

我需要在 StoreProduct 表中添加一个“数量”列。我将如何使用 nHibernate 映射它?

为上述给定场景提供了一个示例映射,但我不确定如何将 Quantity 列映射到 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");
  }
}

【问题讨论】:

    标签: c# database nhibernate orm fluent-nhibernate


    【解决方案1】:

    一个建议是不使用 hasManyToMany 映射,并为作为 Product 子类的 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。

    商店产品的新子类映射

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

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      相关资源
      最近更新 更多