NHibernate 将过滤器应用于包
NHibernate apply filter to bag
我在 XML 中映射了一个 parent/child 关系。一个 Booking 可以有很多付款,所以我的 Booking 模型有一个 IList Payments {get;set;} 属性 并且我将它映射到 XML 中,如下所示:
<bag name="Payments" inverse="true">
<key column="BookingId"/>
<one-to-many class="Payment, NHibernateOneToMany"/>
</bag>
这很好用,但现在我需要引入软删除的概念,所以我在付款中添加了一个已删除的布尔列,我希望预订时的付款只包含未删除的,所以我想做这样的事情:
<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>
我研究过使用过滤器,但它们似乎只提供在启用时使用过滤器的功能 - 我希望这个 属性 每次都能排除所有已删除的项目,所以不会出错可以下线。
实现此目标的最佳方法是什么?
您可以使用包映射的简单where
。如果 Deleted
是付款上的映射 属性,则此映射应该有效:
<bag name="Payments" inverse="true" where="Deleted = 0">
<key column="BookingId"/>
<one-to-many class="Payment, NHibernateOneToMany"/>
</bag>
我在 XML 中映射了一个 parent/child 关系。一个 Booking 可以有很多付款,所以我的 Booking 模型有一个 IList Payments {get;set;} 属性 并且我将它映射到 XML 中,如下所示:
<bag name="Payments" inverse="true">
<key column="BookingId"/>
<one-to-many class="Payment, NHibernateOneToMany"/>
</bag>
这很好用,但现在我需要引入软删除的概念,所以我在付款中添加了一个已删除的布尔列,我希望预订时的付款只包含未删除的,所以我想做这样的事情:
<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>
我研究过使用过滤器,但它们似乎只提供在启用时使用过滤器的功能 - 我希望这个 属性 每次都能排除所有已删除的项目,所以不会出错可以下线。
实现此目标的最佳方法是什么?
您可以使用包映射的简单where
。如果 Deleted
是付款上的映射 属性,则此映射应该有效:
<bag name="Payments" inverse="true" where="Deleted = 0">
<key column="BookingId"/>
<one-to-many class="Payment, NHibernateOneToMany"/>
</bag>