используя ленивую загрузку свойства в nhibernate - PullRequest
1 голос
/ 23 марта 2011

В моем продукте у меня есть следующее свойство. Он работает правильно и возвращает количество имеющихся запасов. Глядя на мой профилировщик, я вижу, что это утверждение вызывается каждый раз, когда я вызываю сущность продукта, которая вызывает проблемы с производительностью. Есть ли способ, которым я могу назвать это свойство только при необходимости. Я добавил 'lazy = true', но он все еще вызывается каждый раз. Я использую nhibernate 2. Я бы предпочел не обновлять, если возможно.

 <property name="StockAvailable" lazy="true"  type="Int32" formula="(SELECT Stock - isnull((select Sum(oi.Quantity) from OrderItems oi inner join Orders o on oi.OrderId = o.Id where (oi.OrderItemStatusId = 0 or oi.OrderItemStatusId = 1)  and o.OrderStatus = 3 and oi.ProductId = Id), 0))"/>

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Ленивые свойства поддерживаются только в NHibernate 3 и выше, поэтому вам нужно обновить, если вы хотите, чтобы это свойство было в вашей сущности.

Другая возможность - создать объект, который загружается ленивым образом и имеет только одно это свойство (вы даже можете отобразить его в той же таблице).

Я не знаю, является ли это проблемой для вас, но вам также следует рассмотреть возможность создания представления для этого расчета, в котором используется группировка по. Это важно, если вы хотите загружать не одну, а несколько сущностей одновременно, так как group by обычно работает лучше, чем подвыбор.

0 голосов
/ 23 марта 2011

http://ayende.com/Blog/archive/2010/01/27/nhibernate-new-feature-lazy-properties.aspx

Глядя на дату, я не думаю, что это вошло в 2.1.2, так как это было выпущено в ноябре 2009 года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...