3

Как написать отображения в новой NHibernate карты-By-коде в таблице Пера стратегии Подкласса для этого класса:Таблица Per Подкласс отображения наследования по NHibernate Mapping-по-кодекс

public class Person 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
} 

public class JuridicalPerson : Person 
{ 
    public virtual int Id { get; set; } 
    public virtual string LegalName { get; set; } 
} 

public class PrivatePerson : Person 
{ 
    public virtual int Id { get; set; } 
    public virtual bool Sex { get; set; } 
} 
+2

Посмотрите здесь: http://notherdev.blogspot.com/2012/01/mapping-by-code-inheritance.html для всех связанных с наследованием опций в сопоставлении по коду. – NOtherDev

ответ

6

Вот возможное отображение в slighly сокращенной формы

public class PersonMapping : ClassMapping<Person> 
{ 
    public PersonMapping() 
    { 
     Table("person"); 
     Id(x => x.Id, m => m.Generator(Generators.Native)); 
     Property(x => x.Name); 
    } 
} 

public class JuridicalPersonMapping : JoinedSubclassMapping<JuridicalPerson> 
{ 
    public JuridicalPersonMapping() 
    { 
     Table("juridical_person"); 
     Key(m => m.Column("person_id")); 
     Property(x => x.LegalName); 
    } 
} 

public class PrivatePersonMapping : JoinedSubclassMapping<PrivatePerson> 
{ 
    public PrivatePersonMapping() 
    { 
     Table("private_person"); 
     Key(m => m.Column("person_id")); 
     Property(x => x.Sex); 
    } 
} 

Вам не нужно дублировать объявление свойства Id в производных классов. Он унаследован от родительского класса Person.