NHibernate-如何绘制树集合的地图
我想将我的对象模型映射到NHibernate。在我的概念中有一个棘手的部分,我不知道在NHibernate中是否有可能做到这一点 我想收集一些树。我在下面有两个类,只指出了重要的属性。Component是树的节点,ComponentGroup是树的集合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
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">