【问题标题】:Mapping a derived class with additional collection property in nhibernate在 nhibernate 中映射具有附加集合属性的派生类
【发布时间】:2013-05-14 00:45:51
【问题描述】:

我正在尝试将 table-per-subclass(默认情况下 fluent-nhibernate 自动映射)与如下类结构一起使用:

public class Product 
{
    public virtual int Id{ get; set; }
    public virtual string Title{ get; set; }
}

public class ProductPackage : Product
{
    public ProductPackage(){ Includes = new List<Product>(); }
    public virtual IList<Prodcut> Includes{ get; private set; }

    [EditorBrowsable( EditorBrowsableState.Never )]
    public class ProductPackageAutoOverride : IAutoMappingOverride<ProductPackage>
    {
        public void Override( AutoMap<ProductPackage> mapping )
        {
            mapping.HasManyToMany( x => x.Includes )
                .WithTableName( "IncludesXProduct" )
                .WithParentKeyColumn( "ProductId" )
                .WithChildKeyColumn( "IncludesProductId" )
                .Cascade.SaveUpdate();
        }
    }
}

它没有添加新表“IncludesXProduct”来表示多对多映射,而是将属性“ProductPackageId”添加到 Product 表。当然,坚持这个模式是行不通的。

我是否遗漏了一些简单的东西,或者 NHibernate 并不真正支持这种类型的东西?

【问题讨论】:

    标签: nhibernate inheritance fluent-nhibernate


    【解决方案1】:

    使用 NHibernate 可以做到这一点。不幸的是,我的流利语法不是很好,但看起来 FNH 以某种方式将这种关系视为多对一而不是多对多。

    如果您用“fluent-nhibernate”标记您的问题,那么您可能会得到更多知识渊博的人来回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 2017-04-04
      • 2013-03-16
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      相关资源
      最近更新 更多