J'ai une structure arborescente de base qui est stockée dans une seule table. Disons que c'est mon modèle:NHibernate: requêtes récursives
public class TreeNode {
public virtual Guid Id { get; private set; }
public virtual string Name { get; private set; }
public virtual IEnumerable<TreeNode> Contents { get; private set; }
}
et la table:
TREE_NODES
PK_NODE Guid
FK_NODE_PARENT Guid
NODE_NAME Varchar
Je veux la mise en œuvre suivante où la valeur de retour est un TreeNode avec le plein arbre avec impatience chargé de ses enfants et leurs enfants, etc.
public class Tree {
ISessionFactory _sessions;
public TreeNode GetBy(Guid id) {
using(var s = _sessions.OpenSession())
return s.Linq<TreeNode>().Single(n => n.Id == id);
}
}
Comment le ferais-je? Apping?
Pouvez-vous élaborer sur «descendre l'arbre dans la fonction de chargement et de forcer l'évaluation»? Je ne sais pas ce que ça veut dire. Qu'est-ce qu'une fonction de chargement par rapport à nhibernate? –
Oui, c'est juste un exemple de code. Tree est plus un référentiel sans état qu'une entité. J'ai trouvé cet article sur les hiérarchies dans NH: http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/05/14/how-to-map-a-tree-in-nhibernate.aspx –
Voici un autre exemple pour référence : http://refactoringaspnet.blogspot.com/2011/04/using-common-table-expressions-to.html –