1

Comment mapper les requêtes suivantes à l'aide de NHibernate fluide (entité, classe de mappage, etc.), les ID des employés sont stockés dans des tables d'identifiants. La table des personnes contient des informations sur les employés et des informations sur les employés.Mappage d'un employé et d'un employé dans Fluent NHibernate

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

FROM Person p 

UNION ALL

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

    FROM Employee e 

INNER JOIN identificateur i on (e.Id = i.value)

INNER JOIN tapez t (i.typeid = t.id et i.typeName = 'EmployeeId')

Quelqu'un?

Répondre

3

Vous devez utiliser une stratégie d'union pour mapper vos sous-classes. Avoir une lecture de la section subclassing du wiki Fluent NHibernate, mais au lieu d'appeler DiscriminateSubclassesOnColumn dans votre ClassMap vous appelleriez UseUnionSubclassForInheritanceMapping.

Ce que vous finiriez avec est un ClassMap pour votre classe de base, puis un SubclassMap pour chacun de vos sous-classes; le ClassMap aurait un appel à UseUnionSubclassForInheritanceMapping dans son constructeur.

Quelque chose comme ceci:

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

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

James, grand fan de la vôtre. Merci beaucoup!!. – user357086

+1

Est-ce possible en automapping (conventions + remplacements)? –

Questions connexes