流畅的NHibernate分层数据问题(每个层次一个表)

时间:2010-10-22 13:55:52

标签: nhibernate mapping subclass hierarchy fluent

我在NH中描述数据库设置时遇到了一些麻烦。

我有以下课程:

    public class BaseData
    {
       public virtual long Id { get; set; }
    }

    public class ExtendedData : BaseData
    {
       public virtual string Name { get; set; }
    }

支持表如下所示:

BaseTable
---------
* Id 

ExtendedTable
-------------
* Id
* Name

用例:我创建了一个我想要保留的ExtendedData实例。我期望两个表中的条目(序列中具有相同的Id)。

有人知道如何为此创建流畅的映射吗?

提前多多感谢!

的Seb

2 个答案:

答案 0 :(得分:1)

由于您有基类,因此可以在映射时忽略它。使用.IgnoreBase<>()方法

示例:

autoPersistenceModel.IgnoreBase<AdvanceEntity>().IgnoreBase<BaseAchievableArea>().IgnoreBase<AuditableEntity>();

希望这会引导你走向正确。

答案 1 :(得分:0)

回顾过去,这太容易了......

public class BaseDataMapping : ClassMap<BaseData>
{
    public BaseDataMapping()
    {
        this.LazyLoad();
        this.Table("BaseTable");
        this.Id(x => x.Id, "id").GeneratedBy.Native("SEQ_ID");         
    }
}

public class ExtendedDataMapping : SubclassMap<ExtendedData>
{
    public ExtendedDataMapping()
    {
        this.LazyLoad();
        this.Table( "ExtendedTable" );
        this.Map(x=>x.Name, "Name" );
    }
}