在Fluent NHibernate中映射人员和员工

时间:2010-09-09 03:32:13

标签: nhibernate fluent-nhibernate nhibernate-mapping automapping

如何使用Fluent NHibernate(实体,映射类等)映射以下查询,员工ID存储在标识符表中。人员表包含员工信息和非员工信息。

SELECT p.Id,p.FirstName,p.LastName

 FROM Person p  

UNION ALL

SELECT e.Id, e.FirstName, e.LastName 

  FROM Employee e 

INNER JOIN标识符i(e.Id = i.value)

INNER JOIN类型开启(i.typeid = t.id和i.typeName ='EmployeeId')

任何?

1 个答案:

答案 0 :(得分:3)

您需要使用联合策略来映射子类。阅读Fluent NHibernate wiki的subclassing部分,但不要在DiscriminateSubclassesOnColumn中致电ClassMap,而是致电UseUnionSubclassForInheritanceMapping

您最终得到的是基类的ClassMap,然后是每个子类的SubclassMap; ClassMap会在其构造函数中调用UseUnionSubclassForInheritanceMapping

这样的事情:

public class PersonMap : ClassMap<Person>
{
  public PersonMap()
  {
     // ... mappings ...
     UseUnionSubclassForInheritanceMapping();
  }
}

public class EmployeeMap : SubclassMap<Employee>
{
  public EmployeeMap()
  {
    // ... mappings ...
  }
}