2010-02-23 41 views
5

我有两个对象父和子列表。在我父母的流利的nhibernate映射中,我想加载孩子的列表。流利的Nibernate把一个where子句放在映射中

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

是否可以设置一个映射来做到这一点?如果不是的话,是否有可能在标准的nhibernate中做到这一点?

谢谢

回答

11

是的,你可以在Fluent NHibernate中使用Where约束来映射它。服用点,如:

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

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

+0

谢谢,这就是我所需要的,但是如何将父对象中的列特定为传递给孩子?如果它的引用像引用(a => a.Supplier).Column(“SupplierNo”);但HasMany没有Column属性。 – lancscoder 2010-02-23 16:38:20

+0

我不确定我是否理解这个问题,我需要更多地了解您的模型和数据库才能给出一个很好的答案。如果你问如何在子对象上指定FK列,HasMany会有一个KeyColumn方法。 – 2010-02-23 16:43:04

+0

不,我想指定父对象上的列,因为它不使用主键。我的父对象有一个PK,名称,辅助ID,这个辅助链接到孩子的FK。我知道它不是一个好的数据库设计,但它是我继承的。所以当我做一个HasMany时,它会传递我的PK值,当我想让它传递我的辅助ID时。谢谢 – lancscoder 2010-02-23 20:01:50