NHibernate父子JOIN对关系类型的限制

时间:2011-09-12 13:34:38

标签: nhibernate fluent-nhibernate nhibernate-mapping

我有一个班级单位(例如公司)与其他单位有许多关系。 我无法更改数据库结构。 db类似于:

Units:
UnitID
UnitName
...

UnitToUnitRelationships:
FromUnitID
ToUnitID
RelationshipType

我需要在查询时限制RelationshipType。我目前有一个带有ISet ChildUnits和ISet ParentUnits的Unit类(因为在不同的关系类型下你可能有不同的父母)。我不需要在我的域中使用RelationshipType;我只会关注一种特殊的类型。如果我正在编写自己的SQL,我只需确保RelationshipType='FOO'ON子句中的所有查询都WHERE

我正在使用Fluent进行映射;我现有的子映射看起来像这样:

HasManyToMany(x => x.ChildUnits).AsSet().Cascade.None().
 Table("UnitToUnitRelationships").Not.LazyLoad().Fetch.Subselect().
 ParentKeyColumn("ToUnitID").ChildKeyColumn("FromUnitID").BatchSize(1000);

我想我可能需要创建一个UnitToUnitRelationship课并且弄乱它,但如果有更简单的方法,我当然更喜欢这个,特别是因为如上所述,我不需要我的属性域。

1 个答案:

答案 0 :(得分:1)

您应该查看.Where()和/或.ChildWhere()方法

  1. .Where()适用于参考表
  2. .ChildWhere()适用于子表
  3. 因此,我认为您应该使用.Where("RelationshipType='FOO'")来解决您的问题。