表按代码按NHibernate映射的每个子类继承映射
如何在新的NHibernate映射中按此类的每个子类策略表中的代码编写映射:表按代码按NHibernate映射的每个子类继承映射,nhibernate,inheritance,nhibernate-mapping,mapping-by-code,Nhibernate,Inheritance,Nhibernate Mapping,Mapping By Code,如何在新的NHibernate映射中按此类的每个子类策略表中的代码编写映射: 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 st
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; }
}
下面是一个可能的映射,其形式略显缩写
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);
}
}
公共类PersonMapping:ClassMapping
{
公众人物地图
{
表(“人”);
Id(x=>x.Id,m=>m.Generator(Generators.Native));
属性(x=>x.Name);
}
}
公共类JuridicalPersonMapping:JoinedSubclass映射
{
公共法人映射()
{
表(“法人”);
键(m=>m.Column(“person_id”);
属性(x=>x.LegalName);
}
}
公共类PrivatePersonMapping:JoinedSubclass映射
{
公私合营
{
表(“个人”);
键(m=>m.Column(“person_id”);
属性(x=>x.Sex);
}
}
您不需要在派生类中重复Id属性的声明。它是从父Person类继承而来的。请看这里:查找“按代码映射”中所有与继承相关的选项。我知道这篇文章非常古老。但是你能告诉我数据库表应该是什么样子吗?