NHibernate中的子类映射使用相同的表

时间:2013-04-24 09:14:57

标签: hibernate nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping

我有一张桌子。那是s。 有两个类1. S和2. P

Plate继承自S.这些类是:

public class S
{
    public virtual decimal Id { get; set; }        
    public virtual IList<P> ChildPs { get; set; }
}

public class P : S
{
    public virtual GType GType { get; set; }
}

internal class SMap : ClassMap<S>
{
    public SMap()
    {
        Table("s");
        Id(x => x.Id).Column("A_S_ID");
        /* Set Parent_S_Id */
        HasMany<P>(x => x.ChildPs)
            .KeyColumn("PARENT_A_S_ID")
            .Cascade.All();
    }
}

internal class PMap : SubclassMap<P>
{
    public PMap()
    {
        References(x => x.GType)
             .Column("G_TYPE_ID")
             .ForeignKey("G_TYPE_LU_ID");
    }
}

我创建了一个S实例,并向P添加了一些ChildP。当我保存S实例时,它会给出错误P is not exist。有人对此有任何想法吗?

请分享您的观点。

1 个答案:

答案 0 :(得分:0)

您的继承映射设置是“table-per-subclass”。这意味着您将为不同的类提供不同的表。 我不确定,但在我看来你无法保存,因为你只有一张桌子。 您可以在Subclasses部分找到其他信息here