2009-06-06 81 views
0

暴露ID我想优化我的类别模型的树结构。 Category-model有一个Parent属性和一个Children-collection。从1:n关系/树(NH)

我通常这样做的方式是加载所有类别(声音不好,但最多100个节点)。然后通过以id为索引的方式对所有类别进行索引,然后通过parentid类别查找父级,然后手动组装树。脏,但非常快。我有的问题是,我不知道如何使用nhibernate从父关系获取/映射ParentID。

说我有这个映射功能NHibernate:

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

我的问题则是:我怎样才能获得或映射的parentid在给定的类别,而不会从数据库加载父?

而且,有没有人有过映射树的实际经验,或者试过http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/05/14/how-to-map-a-tree-in-nhibernate.aspx

回答

1

除了映射父对象之外,您还可以将ParentId映射为属性。您可能需要将ParentId映射为只读,并将逻辑放置在Parent的设置器中以设置ParentId。

但是,这可能不是必需的。如果您在单个ISession中填充树,那么每个父只会从数据库加载一次,并在后续请求中从缓存中检索。