从1:n关系/树(NH)公开ID

时间:2009-06-06 12:07:52

标签: nhibernate fluent-nhibernate

我正在尝试为我的类别模型优化树结构。 Category-model有一个Parent-property和一个Children-collection。

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

说我在流利的nhibernate中有这个映射:

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

我的问题是:如何在不从数据库加载Parent的情况下获取或映射给定类别的parentid?

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

1 个答案:

答案 0 :(得分:1)

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

但是,这可能没有必要。如果您在单个ISession中填充树,则每个Parent将仅从数据库加载一次,并在后续请求中从缓存中检索。