2010-05-31 13 views
0

Il existe une table A contenant des données non-versionnées communes pour les entités. Il existe également des tables B, C, D avec des données versionnées de type d'entité particulier. Toutes ces tables font référence au tableau A.Mappage un-à-un du complexe NHibernate

La tâche consiste à ajouter un mappage d'une propriété du type de l'entité, par exemple, stocké dans la table B, qui référencerait la table A, et spécifier une règle de la manière dont l'entité doit être recherchée de la table B basée sur l'identificateur de la table A. (Par exemple, pour récupérer la dernière version d'une entité).

C'est possible avec NHibernate?

Répondre

0

Jetez un coup d'œil à this posté par Ayende. Vous pouvez mapper cela en utilisant une table par hiérarchie ou une table par sous-classe. Si vous choisissez le premier, vous devrez ajouter une colonne discriminante au tableau A.

0
class TableA 
{ 
    public virtual int Id { get; set; } 

    internal virtual IList<TableB> Bs { get; set; } 
    public virtual TableB LatestB { get { return Bs[0]; } set { Bs.Insert(0, value); } } 
} 

class TableAMap : ClassMap<TableA> 
{ 
    public TableAMap() 
    { 
     HasMany(x => x.Bs) 
      .KeyColumn("a_id") 
      .OrderBy("Version desc"); 
    } 
} 
Questions connexes