2009-09-02 10 views
0

J'ai ce que je pense devrait être un problème de mappage assez simple, mais n'ayant aucune chance de trouver ce qui me manque pour le faire fonctionner. Je vais juste sauter dans un exemple simple pour arriver au point de ce que je suis en train:Nhibernate Inheritance baseclass question

//Base user class 
public class UserBase : Entity 
{ 
    //properties user class should have 
} 
// 
//Concrete User class (in different assembly) 
// 
//Item in same assembly as UserBase 
public class Item : Entity 
{ 
    public virtual UserBase User { get; set; } 
    //other properties etc.. 
} 

Ainsi, la classe de UserBase sont appliquées et cartographié dans le cadre d'une classe d'utilisateur dans un assemblage. C'est bien, mais comme je ne mappe pas UserBase comme son propre mapping, quand le mapping essaie de s'exécuter sur la classe Item, il explose car UserBase n'est pas mappé.

Ma question est; Est-il possible d'indiquer à la classe Item d'utiliser la classe concrète pour UserBase? J'utilise Fluent NHibernate pour faire ma cartographie, mais je pense que tant que je peux obtenir la bonne poussée sur la façon dont le fichier de cartographie devrait ressembler, je peux comprendre comment le faire dans Fluent NHibernate.

Merci, Bryan

Répondre

0

Vous devrez créer un mappage pour UserBase, et aussi pour chaque sous-classe de UserBase, et préciser que ces classes sont des sous-classes de UserBase.

Il y a 3 façons d'implémenter l'héritage dans NHibernate. Je ne sais pas si Fluent a de la documentation à ce sujet, mais je crois que l'article this devrait être utile pour vous aider à démarrer.

+0

Je l'avais regardé une fois auparavant, mais je pensais qu'il pourrait y avoir une façon plus jolie de le faire. Je suppose que cela a du sens cependant. –