对关系类型有限制的NHibernate父子联接
我有一个班级单位(例如公司),与其他单位有很多关系我无法更改数据库结构。数据库看起来像:对关系类型有限制的NHibernate父子联接,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有一个班级单位(例如公司),与其他单位有很多关系我无法更改数据库结构。数据库看起来像: Units: UnitID UnitName ... UnitToUnitRelationships: FromUnitID ToUnitID RelationshipType 我需要在查询时限制RelationshipType。我目前有一个带有ISet ChildUnits和ISet ParentUnits的单元类(因为在不同的关系类型下,您可能有不同的父对象)。我在我的领域中不需要Relations
Units:
UnitID
UnitName
...
UnitToUnitRelationships:
FromUnitID
ToUnitID
RelationshipType
我需要在查询时限制RelationshipType。我目前有一个带有ISet ChildUnits和ISet ParentUnits的单元类(因为在不同的关系类型下,您可能有不同的父对象)。我在我的领域中不需要RelationshipType;我只关心一种特殊的类型。如果我在编写自己的SQL,我只需确保所有查询在ON
或WHERE
子句中都有RelationshipType='FOO'
我正在使用Fluent进行映射;我现有的子映射如下所示:
HasManyToMany(x => x.ChildUnits).AsSet().Cascade.None().
Table("UnitToUnitRelationships").Not.LazyLoad().Fetch.Subselect().
ParentKeyColumn("ToUnitID").ChildKeyColumn("FromUnitID").BatchSize(1000);
我想我可能需要创建一个
UnitToUnitRelationship
类并处理它,但是如果有更简单的方法,我当然更愿意这样做,特别是因为如上所述,我不需要域中的属性。您应该查看.Where()
和/或.ChildWhere()
方法
.Where()
应用于参考表.ChildWhere()
应用于子表因此,我认为您应该使用
.Where(“RelationshipType='FOO')
来解决您的问题。您应该查看.Where()
和/或.ChildWhere()
方法
.Where()
应用于参考表.ChildWhere()
应用于子表因此,我认为您应该使用
.Where(“RelationshipType='FOO')
来解决您的问题。是的,这就成功了!非常有用,我不知道mapping类上的特定方法。是的,这就成功了!非常有用,不知道映射类上的特定方法。