NHibrnate Mapping - PullRequest
       5

NHibrnate Mapping

0 голосов
/ 27 марта 2012

Я хочу создать объекты буксировки для одной и той же таблицы без дискриминатора. Давайте посмотрим, что моя таблица представляет Person, и я хотел бы создать 2 класса сущностей: Person и PersonExt. Person будет содержать большинство столбцов таблицы, таких как: имя, возраст, адрес доп. и класс PersonExt будет наследовать от класса Person и будет содержать сопоставление с остальными столбцами таблицы Person. Я не хочу создавать дополнительный файл сопоставления для 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 голосов
/ 27 марта 2012

Да, используя Fluent mapping. например,

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