Картографирование человека и сотрудника в Fluent NHibernate - PullRequest
1 голос
/ 09 сентября 2010

Как я могу отобразить следующие запросы, используя Fluent NHibernate (сущность, класс отображения и т. Д.), Идентификаторы сотрудников хранятся в таблицах идентификаторов. Таблица Person содержит информацию о сотрудниках и не сотрудниках.

ВЫБРАТЬ 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)

ВНУТРЕННЕЕ СОЕДИНЕНИЕ введите t on (i.typeid = t.id и i.typeName = 'EmployeeId')

Любой

1 Ответ

3 голосов
/ 09 сентября 2010

Вам нужно использовать стратегию объединения для отображения ваших подклассов.Прочитайте раздел подклассов вики Fluent NHibernate, но вместо вызова DiscriminateSubclassesOnColumn в вашей ClassMap вы бы позвонили UseUnionSubclassForInheritanceMapping.

Что бы вы закончилис ClassMap для вашего базового класса, затем SubclassMap для каждого из ваших подклассов;ClassMap будет иметь вызов UseUnionSubclassForInheritanceMapping в своем конструкторе.

Примерно так:

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

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