有没有办法在nhibernate中进行反向查找?

时间:2010-07-18 03:25:46

标签: c# nhibernate fluent-nhibernate foreign-keys

我有两张桌子:

  1. 部件
  2. ComponentDependencies
  3. ComponentDependencies 有两列: ComponentId ComponentDependencyID 。 (两个外键都进入组件表的 Id 字段。

    我正在使用流利的nhiberate,我的组件对象有:

     public virtual IList<ComponentDependency> Dependencies { get; set; }
    

    在我的ComponentMap类中,我有nhibernate map:

    HasMany(x => x.Dependencies)
                .AsBag().Inverse();
    

    所以,当我有一个组件对象时,我可以看到它的依赖项列表。

    无论如何,我可以拥有一个具有“反向”列表的附加属性。我的意思是我想要一个名为“DependentOf”的属性,它也是一个

      IList<ComponentDependency>
    

    哪个项目的当前组件是关系中的依赖组件?

1 个答案:

答案 0 :(得分:1)

这看起来像是一个物料清单问题,组件通过ComponentDependencies链接表与自身有多对多的关系。您可以通过交替哪一列是父键列来映射两个关系方向:

HasManyToMany(x => x.Dependencies).Table("ComponentDependencies")
    .ParentKeyColumn("ComponentId").ChildKeyColumn("ComponentDependencyId");

HasManyToMany(x => x.DependentOf).Table("ComponentDependencies")
    .ParentKeyColumn("ComponentDependencyId").ChildKeyColumn("ComponentId");