3

我有以下财产

<property name="Allocated" type="decimal" formula="(select sum(a.AllocationAmount) from  Allocation a where  a.TransactionId = TransactionId)" />

这会加载已分配给运行良好的发票的交易金额。

但是,大多数情况下我并不关心这个数量。有没有办法有条件地加载这个计算列?或者有没有办法将此计算列添加到 HQL/Critera,以便我可以将其作为我运行的某些特定查询的一部分?

4

2 回答 2

4

在 NH 3.0 中,您可以定义惰性属性,它们的工作方式与听起来完全一样(请参阅http://ayende.com/Blog/archive/2010/01/27/nhibernate-new-feature-lazy-properties.aspx

但是,这看起来更适合查询或可能充当视图的伪实体。

于 2010-07-23T04:07:09.343 回答
2

如果您access="none"在属性映射上指定,您可以将属性完全排除在对象模型之外,但仍使用 hql 对其进行查询。有关详细信息,请参阅本文

此外,您可以将该逻辑分解为一个函数,使用自定义方言对其进行注册,然后使用标准 api(通过Projections.SqlFunction)对其进行查询/投影

于 2010-07-23T11:44:01.493 回答