Nhibernate 在映射中放置where子句

Nhibernate 在映射中放置where子句,nhibernate,orm,fluent-nhibernate,nhibernate-mapping,Nhibernate,Orm,Fluent Nhibernate,Nhibernate Mapping,我有两个对象:父对象和子对象列表。在父对象的fluent nhibernate映射中,我要加载子对象列表 但是我希望这是有条件的,子表中的一列称为“IsDeleted”,我只想返回“IsDeleted”为false的子表 是否可以设置映射来执行此操作?如果没有,是否可以只使用标准的nhibernate 谢谢是的,您可以在Fluent NHibernate中使用Where约束来映射此内容。比如: HasMany(x => x.Children).Where("IsDeleted = 0");

我有两个对象:父对象和子对象列表。在父对象的fluent nhibernate映射中,我要加载子对象列表

但是我希望这是有条件的,子表中的一列称为“IsDeleted”,我只想返回“IsDeleted”为false的子表

是否可以设置映射来执行此操作?如果没有,是否可以只使用标准的nhibernate


谢谢

是的,您可以在Fluent NHibernate中使用Where约束来映射此内容。比如:

HasMany(x => x.Children).Where("IsDeleted = 0");

Where约束应该使用SQL语法,而不是HQL。对于允许软删除的表,映射过滤已删除记录的视图可能更容易。

谢谢,这正是我所需要的,但如何指定父对象中的列以传递给子对象?如果它是一个引用,它类似于引用(a=>a.Supplier)。列(“SupplierNo”);但是HasMany没有列属性。我不确定我是否理解这个问题,我需要更多地了解您的模型和数据库才能给出一个好的答案。如果您询问如何在子对象上指定FK列,HasMany有一个KeyColumn方法。否我想在父对象上指定列,因为它不使用主键。我的父对象有一个pk、名称、辅助id,此辅助链接到子对象中的FK。我知道这不是一个好的数据库设计,但它是我继承的。所以当我做一个HasMany时,当我想让它通过我的第二个ID时,它会传递我的PK值。谢谢,我理解。看起来Fluent NHibernate已经在HasMany中添加了一个PropertyRef方法,但它不在1.0RTM中,您需要获得一个更新的构建。看见你应该把这个作为一个新问题发布,这样搜索就会找到它。谢谢你的链接和建议。升级到最新版本和propertyref工作正常。谢谢