NHibernate: условно загрузить вычисляемый столбец - PullRequest
3 голосов
/ 23 июля 2010

У меня есть следующий proprty

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

Это загружает сумму транзакции, которая была распределена на счета, которая работает прекрасно.

Однако, в большинстве случаев я незаботиться об этой сумме.Есть ли способ условно загрузить этот вычисляемый столбец?Или есть способ добавить этот вычисляемый столбец в HQL / Critera, чтобы я мог просто включить его в некоторые конкретные запросы, которые я выполняю?

Ответы [ 2 ]

4 голосов
/ 23 июля 2010

В NH 3.0 вы можете определить ленивые свойства, которые работают именно так, как они звучат (см. http://ayende.com/Blog/archive/2010/01/27/nhibernate-new-feature-lazy-properties.aspx)

Однако это выглядит более подходящим для запроса ИЛИ, возможно, псевдо-сущности, которая действует как представление.

2 голосов
/ 23 июля 2010

Если вы укажете access="none" в отображении свойства, вы можете исключить свойство из вашей объектной модели все вместе, но при этом запросить его с помощью hql. См. эту статью для получения дополнительной информации.

Кроме того, вы можете включить эту логику в функцию, зарегистрировать ее с помощью собственного диалекта, а затем выполнить запрос / проект по нему, используя критерии API (через Projections.SqlFunction)

...