Nhibernate 氟纤维酸盐。我需要将hasmany关系映射到连接的子类实体类型

Nhibernate 氟纤维酸盐。我需要将hasmany关系映射到连接的子类实体类型,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我正在努力让这个FluentNHibernate映射生效。我有三张桌子:个人、雇员和雇主。Employee表扩展了Person表的属性,它的主键是Person表的外键 Employee表还有一个指向Employer表的外键。一个雇主可以有许多雇员,每个雇员都是一个人 我使用FluentNHibernate来映射这三个表。我使用了Employee->Person的联接子类映射 我正试图获得一个工作映射,这样我就可以让雇主及其关联的雇员立即抓取,但是生成的select语句在Employee表good

我正在努力让这个FluentNHibernate映射生效。我有三张桌子:个人、雇员和雇主。Employee表扩展了Person表的属性,它的主键是Person表的外键

Employee表还有一个指向Employer表的外键。一个雇主可以有许多雇员,每个雇员都是一个人

我使用FluentNHibernate来映射这三个表。我使用了Employee->Person的联接子类映射

我正试图获得一个工作映射,这样我就可以让雇主及其关联的雇员立即抓取,但是生成的select语句在Employee表good和Person表bad上选择EmployerId,从而导致错误,请参见下文

选择employees0。EmployeerID作为Employee5\u 2\u,employees0\u。 如:如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如:(1)如 姓名为FirstName1_1_,员工0_。姓氏为LastName1_1_,员工0_1_。PayRat e作为工资率2,雇员0,雇员ID作为雇员2,雇员1,雇员 rId作为雇员0,雇员1。姓名作为姓名0,来自[Person]雇员0 t在employees0.PersonId=employees0.1.Employ上外部加入employees0\u 1\u eeId左外联接[雇主]雇主1在雇主0上。雇主ID=雇主1 .EmployerId其中employees0.Employee.EmployerId=@p0@p0=1

请在下面找到模式、类和流映射。我做错了什么

我为这些表定义了如下类:

public class Person
{
    public int PersonId { get; set; }
    public string PersonClassification { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Employer
{
    public int EmployerId { get; set; }
    public string Name { get; set; }
    public IList<Employee> Employees { get; set; }
}

public class Employee : Person
{
    public Employer Employer { get; set; }
    public decimal PayRate { get; set; }

}

public class PersonMap : ClassMap<Person>
{
    public PersonMap()
    {
        Id(x => x.PersonId).Column("PersonId").GeneratedBy.Identity();
        Map(x => x.FirstName);
        Map(x => x.LastName);
        DiscriminateSubClassesOnColumn("PersonClassification");
    }
}

public class EmployeeMap : SubclassMap<Employee>
{
    public EmployeeMap()
    {
        this.DiscriminatorValue("Employee");

        Join
            (
                "Employee",
                join =>
                {
                    join.Optional();
                    join.KeyColumn("EmployeeId");
                    join.Map(x => x.PayRate);
                    join.References(x => x.Employer).Column("EmployerId");
                }
            );
    }
}

public class EmployerMap : ClassMap<Employer>
{
    public EmployerMap()
    {
        Id(x => x.EmployerId).Column("EmployerId").GeneratedBy.Identity();
        Map(x => x.Name);
        HasMany(x => x.Employees).KeyColumn("Employee.EmployerId");
    }
}

8个月后,您可能不再关心了,但您是否也可以发布用于执行查询的代码—生成上述SQL的查询?谢谢。8个月后,您可能不再关心了,但您是否也可以发布用于执行查询的代码—生成上述SQL的查询?谢谢