2009-09-04 6 views
2

Nouveau à FluentNHibernate = Dparent simple FluentNHibernate/cartographie des enfants

J'ai classes parent/enfants comme suit:

public class Parent 
{ 
    public virtual int ID { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual IList<Child> Children { get; set; } 
} 

public class Child 
{ 
    public virtual int ID { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual Parent ActiveParent { get; set; } 
} 

Avec applications de:

public ParentMap() 
{ 
    Id(x => x.ID); 
    Map(x => x.Name); 
    HasMany(x => x.Children) 
     .Inverse(); 
     .Cascade.All(); 
} 

public ChildMap() 
{ 
    Id(x => x.ID); 
    Map(x => x.Name); 
    //Map(x => x.ActiveParent) 
    // .Column(ParentID); 
} 

Le commenté sur zone de la carte de l'enfant est la question que j'ai actuellement des problèmes avec. J'aimerais pouvoir créer un objet enfant et appeler son parent (ie, someChild.ActiveParent), mais je ne suis pas sûr de la façon de le mapper via l'interface courante.

La structure de table pour la table enfant contient un parentid, avec l'intention de charger paresseux l'objet parent s'il est appelé. Toute aide est toujours grandement appréciée.

Répondre

6
References(x => x.Parent); 
+0

Oui, certainement volé juste au-dessus de celui-là. –

0

Ajout à la réponse de mxmissile, vous voulez ajouter un LazyLoad() à la fin de l'appel References(), et vous voudrez peut-être faire quelque chose comme ceci dans votre configuration:

.Mappings(m => 
    m.FluentMappings.AddFromAssemblyOf<ParentMap>() 
     .ConventionDiscovery.Add(ForeignKey.EndsWith("ID"))) 

Le dernier line indique à NHibernate Fluent de s'attendre à ce que les clés étrangères soient nommées ParentID plutôt que la valeur par défaut (Parent_Id?). Vous n'avez donc plus besoin de spécifier explicitement le nom de la colonne dans chaque mappage de relation.

+0

Ah, merci pour la clarification supplémentaire sur le côté configuration. J'étais un peu dans le noir à propos de la "magie" qui se produisait avec les mappages de colonnes. –

+1

NHibernate a plusieurs autres conventions que vous pouvez modifier/modifier si nécessaire. Plus de détails ici: http://wiki.fluentnhibernate.org/Conventions –

Questions connexes