NHibernate将过滤器应用于包

时间:2016-07-07 10:17:53

标签: nhibernate nhibernate-mapping

我有一个父/子关系,我在XML中进行映射。预订可以有很多付款,因此我的预订模型有一个IList付款{get; set;}属性,我将其映射为XML格式如下:

<bag name="Payments" inverse="true">
  <key column="BookingId"/>
  <one-to-many class="Payment, NHibernateOneToMany"/>
</bag>

这很好用,但现在我需要介绍一个软删除的概念,所以我在Payment上添加了一个Deleted bool列,我希望Booking上的Payments只包含未删除的,所以我想做这样的事情:

<bag name="Payments" inverse="true">
  <key column="BookingId"/>
  <one-to-many class="Payment, NHibernateOneToMany"/>
  <sql>SELECT * FROM Payment WHERE Deleted = 0 AND BookingId = bookingId</sql>
</bag>

我已经研究过使用过滤器了,但是他们似乎只能提供使用过滤器的功能 - 我希望这个属性每次都排除所有已删除的项目,所以没有错误的机会可以做好准备。

实现这一目标的最佳途径是什么?

1 个答案:

答案 0 :(得分:3)

您可以使用行李贴图的简单where。如果Deleted是付款的映射属性,则此映射应该有效:

<bag name="Payments" inverse="true" where="Deleted = 0">
  <key column="BookingId"/>
  <one-to-many class="Payment, NHibernateOneToMany"/>
</bag>