2010-10-22 5 views
1

J'ai quelques problèmes illustrant une installation de base de données dans NH.Question de données hiérarchiques NHibernate Fluent (Un tableau par hiérarchie)

J'ai les classes suivantes:

public class BaseData 
    { 
     public virtual long Id { get; set; } 
    } 

    public class ExtendedData : BaseData 
    { 
     public virtual string Name { get; set; } 
    } 

Les tables de support ressemblent à ce qui suit:

BaseTable 
--------- 
* Id 

ExtendedTable 
------------- 
* Id 
* Name 

utilisation: créer une instance ExtendedData que je veux persister. Je m'attends à des entrées dans les deux tables (avec le même Id d'une séquence).

Est-ce que quelqu'un a une idée de comment créer une cartographie fluide pour cela?

Merci beaucoup d'avance!

Seb

+0

comme un mapping One-To-One est pas? –

Répondre

0

regardant en arrière, c'était trop facile ...

Rechercher
public class BaseDataMapping : ClassMap<BaseData> 
{ 
    public BaseDataMapping() 
    { 
     this.LazyLoad(); 
     this.Table("BaseTable"); 
     this.Id(x => x.Id, "id").GeneratedBy.Native("SEQ_ID");   
    } 
} 

public class ExtendedDataMapping : SubclassMap<ExtendedData> 
{ 
    public ExtendedDataMapping() 
    { 
     this.LazyLoad(); 
     this.Table("ExtendedTable"); 
     this.Map(x=>x.Name, "Name"); 
    } 
} 
1

Comme vous avez une classe de base, vous pouvez l'ignorer sur la cartographie. Utilisez .IgnoreBase <>() Méthode

exemple:

autoPersistenceModel.IgnoreBase<AdvanceEntity>().IgnoreBase<BaseAchievableArea>().IgnoreBase<AuditableEntity>(); 

Espérons que cela vous diriger sur le côté droit.