Je n'arrive pas à mapper une structure arborescente à l'aide de NHibernate Fluent, sans avoir à mettre dans ce que je crois être un hack.Mappage de l'arborescence avec Fluent NHibernate
Considérons les classes suivantes:
Node
(résumé, aint Id
etGroupNode Parent
(sinull
, le noeud se trouve dans le nœud racine))GroupNode
(hérite deNode
, aIList<GroupNode> Groups
etIList<ItemNode> Items
)ItemNode
(hérite deItem
)
Idéalement, cela aurait la structure de base de données suivante:
- GroupNodes (entier Id, ParentId entier annulable)
- ItemNodes (entier Id, ParentId entier annulable)
Mon cartographes ressemble ceci:
public class GroupNodeMap : ClassMap<GroupNode>
{
public GroupNode()
{
Id(x => x.Id);
References(x => x.Parent);
HasMany(x => x.Groups).LazyLoad();
HasMany(x => x.Items).LazyLoad();
}
}
public class ItemNodeMap : ClassMap<ItemNode>
{
public ItemNodeMap()
{
Id(x => x.Id);
References(x => x.Parent);
}
}
Malheureusement, cela crée un ensemble de références en double (Chaque table reçoit à la fois un ParentId
et un GroupNodeId
. Je peux modifier ce comportement en ajoutant .KeyColumn("ParentId")
après .LazyLoad()
, mais cela ressemble à un hack, et je voudrais qu'il s'exprime en utilisant soit des conventions ou des lambdas au lieu d'une chaîne magique.
Quelqu'un pourrait-il me diriger dans la bonne direction?
J'ai le même problème ... – UpTheCreek
avez-vous trouvé une solution pour cela? –