NHibernate映射

时间:2012-03-27 11:23:30

标签: c# nhibernate nhibernate-mapping

我想为没有鉴别器的同一个表创建两个实体。 让我们知道我的表代表Person,我想创建2个实体类:Person 和PersonExt。 Person将包含大多数表列,如:name,Age,Adress ext。和PersonExt类 将从Person类中吸入,并将包含到Person Table中其余列的mappinge。我不想为PersonExt创建一个额外的映射文件,该文件将再次映射到所有Person文件 - 但只是映射到我尚未映射到的其余列。 NHibrnate有可能吗?如果是的话,你能解释一下吗?

Public Class Person
{
   public virtual string Name {get;set;}
   public virtual int Age {get;set;}
   public virtual string Address{get;set;}
}

Public class PersonExt:Person
{
   public virtual int NumOfChildren {get;set;}
   public virtual string FamilyStatus {get;set;}
   ......
}

1 个答案:

答案 0 :(得分:0)

是的,使用Fluent映射。 e.g。

public abstract class PersonBaseMap<TPerson> : ClassMap<TPerson> where TPerson : Person
{
    public PersonBaseMap()
    {
       Map(p => p.Name);
       Map(p => p.Age);
       Map(p => p.Address);
    }
}

public class PersonMap : PersonBaseMap<Person>
{
}

public class PersonExtMap : PersonBaseMap<PersonExt>
{
    public PersonExtMap()
    {
       Map(p => p.NumOfChildren);
       Map(p => p.FamilyStatus);
    }
}