如何使用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')
任何?
答案 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 ...
}
}