2010-07-18 36 views
3

我有两个表:有没有办法在nhibernate中进行反向查找?

  1. 组件
  2. ComponentDependencies

ComponentDependencies有两列:COMPONENTIDComponentDependencyID。 (外国键进入Id字段的组件

我用流利的nhiberate和我有我的组件对象:

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

,并在我的ComponentMap类,我有NHibernate的地图:

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

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

无论如何,我可以有一个额外的财产有“反向”名单。我的意思是,我想了一个名为“DependentOf”属性,这也是一个

IList<ComponentDependency> 

它具有所有这哪里电流分量是关系依赖组件的项目?

回答

1

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

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

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