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

Nhibernate 从1:n关系/树(NH)公开ID,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我正在尝试为我的类别模型优化一个树结构。类别模型具有父属性和子集合 我通常这样做的方式是加载所有类别(听起来很糟糕,但最多100个节点)。然后,通过按id索引所有类别,然后按类别parentid查找父级,手动组装树。脏但很快。我的问题是,在使用nhibernate时,我不知道如何从父关系获取/映射ParentID 假设我在fluent nhibernate中有此映射: References(cat => cat.Parent,"Parent_id")

我正在尝试为我的类别模型优化一个树结构。类别模型具有父属性和子集合

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

假设我在fluent nhibernate中有此映射:

        References(cat => cat.Parent,"Parent_id")
            .FetchType.Select()
            .WithForeignKey("Category_ParentCategory");
我的问题是:如何在不从数据库加载父对象的情况下获取或映射给定类别的parentid


还有,有没有人有映射树的实际经验,或者有没有尝试过?

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

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