2009-06-06 10 views
0

J'essaie d'optimiser une structure arborescente pour mon modèle de catégorie. Le modèle Category a une collection Parent-property et une collection Children.Exposer ID à partir de 1: n relation/arbre (NH)

La façon dont je le fais normalement, est de charger toutes les catégories (mauvais sons, mais 100 nœuds maximum). L'arbre est ensuite assemblé manuellement, en indexant toutes les catégories par id, puis en recherchant le parent par les catégories parentid. Sale mais vraiment rapide. Le problème que j'ai, c'est que je ne sais pas comment obtenir/mapper le ParentID de la relation parent lors de l'utilisation de nhibernate.

Dire que j'ai cette correspondance dans Fluent NHibernate:

 References(cat => cat.Parent,"Parent_id") 
      .FetchType.Select() 
      .WithForeignKey("Category_ParentCategory"); 

Ma question est alors: Comment puis-je obtenir ou cartographier la parentid sur une catégorie donnée, sans charger le parent de la base de données?

Et aussi, quelqu'un a-t-il une expérience pratique dans la cartographie des arbres, ou essayé http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/05/14/how-to-map-a-tree-in-nhibernate.aspx?

Répondre

1

Vous pouvez mapper l'identificateur ParentId en tant que propriété en plus de mapper l'objet parent. Vous voudrez probablement mapper ParentId en lecture seule et mettre une logique dans le setter pour Parent pour définir ParentId.

Cependant, cela peut ne pas être nécessaire. Si vous peuplez l'arborescence en une seule ISession, chaque Parent ne sera chargé qu'une fois à partir de la base de données et récupéré du cache sur les requêtes suivantes.

Questions connexes