首页 文章

在Fluent NHibernate中映射人员和员工

提问于
浏览
1

如何使用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类型t on(i.typeid = t.id和i.typeName ='EmployeeId')

任何人?

1 回答

  • 3

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

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

    像这样的东西:

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

相关问题