NHibernate-如何绘制树集合的地图

NHibernate-如何绘制树集合的地图,nhibernate,mapping,root,treenode,Nhibernate,Mapping,Root,Treenode,我想将我的对象模型映射到NHibernate。在我的概念中有一个棘手的部分,我不知道在NHibernate中是否有可能做到这一点 我想收集一些树。我在下面有两个类,只指出了重要的属性。Component是树的节点,ComponentGroup是树的集合 public class Component { public Component Parent { get; set; } public IList<Component> SubComponents { get; s

我想将我的对象模型映射到NHibernate。在我的概念中有一个棘手的部分,我不知道在NHibernate中是否有可能做到这一点

我想收集一些树。我在下面有两个类,只指出了重要的属性。Component是树的节点,ComponentGroup是树的集合

public class Component
{
    public Component Parent { get; set; }
    public IList<Component> SubComponents { get; set; }
    public ComponentGroup Group { get; set; }
}

public class ComponentGroup
{
    public IList<Component> Components { get; set; }
}
现在我想让每个组件知道它属于哪个组件组,所以我需要从每个组件引用ComponentGroup属性。但是ComponentGroup应该只有根节点的集合直接子节点-Components集合。这就像是一对一半的映射;一方仅参考了多方的一些项目


您知道如何使用NHibernate映射类似的内容吗?

我将给它一个使用FluentNHibernate生成的快照

<class name="Component" table="`Component`" xmlns="urn:nhibernate-mapping-2.2">
<id name="ComponentId" type="Int32" column="ComponentId">
  <generator class="identity" />
</id>
<many-to-one name="Parent" column="ParentId" />
<bag name="SubComponents">
  <key column="ComponentId" />
  <one-to-many class="NHibernateTests.Component, NHibernateTests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bag>
<many-to-one name="Group" column="GroupId" />
编辑:

如果希望所有组件都知道其ComponentGroup,则在所有组件上设置ComponentGroup

在ComponentGroup中,如果只需要所有根组件,则将包更改为:

<bag name="Components" where="ParentId is null"> 
所以你只得到根组件

<bag name="Components" where="ParentId is null">