0

Je suis en train de tracer une hiérarchie de classes qui ressemble à ceci:Mapper une classe de base référencée avec Fluent NHibernate

public abstract class A { } 
public class B : A { } 
public class C : A { } 

Je ne veux pas la carte de classe A parce qu'il est abstrait, je sais que je peux faire :

.IgnoreBase<A>() 

à ne pas la carte A et la carte toutes les propriétés de A à B et C. Mais mon problème est que j'ai aussi une autre classe D qui ressemble à ce qui suit:

public class D { 
    public virtual A a { get; set; } 
} 

Maintenant, quand j'essaie de mapper avec la fonction de mappage automatique de nhibernate fluide, j'obtiens une erreur que la classe D fait référence à une classe A non mappée, bien que la classe A soit effectivement mappée à travers les sous-classes B et C. ce?

Répondre

3

Si vous ne mappez pas la classe A, les classes B et C ne seront pas des sous-classes. Ce ne sont que deux classes qui ne sont pas connectées du tout. NHibernate ne sait rien sur la classe A, alors comment NHibernate devrait-il savoir gérer les références à la classe A?

Ne pas mapper A parce que c'est abstrait n'est pas une raison. Vous pouvez également mapper des interfaces. Peut-être que ce que vous voulez faire est plus clair si vous nous montrez votre modèle de base de données (tableaux).

Questions connexes