我有两张桌子:
ComponentDependencies 有两列: ComponentId 和 ComponentDependencyID 。 (两个外键都进入组件表的 Id 字段。
我正在使用流利的nhiberate,我的组件对象有:
public virtual IList<ComponentDependency> Dependencies { get; set; }
在我的ComponentMap类中,我有nhibernate map:
HasMany(x => x.Dependencies)
.AsBag().Inverse();
所以,当我有一个组件对象时,我可以看到它的依赖项列表。
无论如何,我可以拥有一个具有“反向”列表的附加属性。我的意思是我想要一个名为“DependentOf”的属性,它也是一个
IList<ComponentDependency>
哪个项目的当前组件是关系中的依赖组件?
答案 0 :(得分:1)
这看起来像是一个物料清单问题,组件通过ComponentDependencies链接表与自身有多对多的关系。您可以通过交替哪一列是父键列来映射两个关系方向:
HasManyToMany(x => x.Dependencies).Table("ComponentDependencies")
.ParentKeyColumn("ComponentId").ChildKeyColumn("ComponentDependencyId");
HasManyToMany(x => x.DependentOf).Table("ComponentDependencies")
.ParentKeyColumn("ComponentDependencyId").ChildKeyColumn("ComponentId");