问题似乎非常通用,但我是fluentnhibernate的新手,我的所有搜索都没有发现任何有用的东西。
我有一个类似于这个的类层次结构:
public class Person
{
public virtual int Id { get; protected set; }
public virtual string GivenName { get; set; }
public virtual string FamilyName { get; set; }
}
public class Employee : Person
{
public virtual string WhoAmI { get { return "I am just an Employee"; } protected set { } }
}
public class Boss : Employee
{
public override string WhoAmI { get { return "I am the boss."; } protected set { } }
}
即。一个基类和两个子类(一个派生自另一个)。子类具有相同的签名,但基类没有。
下面的映射将有关三个类的实例的所有信息放在同一个表中:
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(x => x.Id);
Map(x => x.GivenName);
Map(x => x.FamilyName);
DiscriminateSubClassesOnColumn("type");
}
}
public class EmployeeMap : SubclassMap<Employee>
{
public EmployeeMap()
{
Map(x => x.WhoAmI);
}
}
public class BossMap : SubclassMap<Boss>
{
public BossMap()
{
}
}
抛弃DiscriminateSubClassesOnColumn将生成三个表:
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(x => x.Id);
Map(x => x.GivenName);
Map(x => x.FamilyName);
}
}
public class EmployeeMap : SubclassMap<Employee>
{
public EmployeeMap()
{
Map(x => x.WhoAmI);
}
}
public class BossMap : SubclassMap<Boss>
{
public BossMap()
{
}
}
我的问题:是否有可能(在fluentnhibernate中)将这些类映射到两个表中,即有
答案 0 :(得分:0)
如果您只是将BossMap别名为EmployeeMap:
public class BossMap : EmployeeMap {}
你应该得到你需要的映射。