NHibernate - Стремительная загрузка сгруппированных объектов при агрегировании - PullRequest
0 голосов
/ 08 октября 2011

У меня есть следующий код, где я собираю статистику аукциона из таблицы статистики и возвращаю аукцион, а также суммированные значения (в таблице статистики может быть несколько строк за аукцион ...)

   var stats = _session.QueryOver<AuctionStatistic>()
       .Select(
           Projections.Group<AuctionStatistic>(s => s.Auction),
           Projections.Sum<AuctionStatistic>(s => s.BidCount),
           Projections.Sum<AuctionStatistic>(s => s.ViewCount),
           Projections.Sum<AuctionStatistic>(s => s.SearchCount)
       )
       .OrderBy(Projections.Sum<AuctionStatistic>(s => s.ApplicationCount)).Desc
       .Fetch(x => x.Auction).Eager
       .Take(take)
       .List<object[]>();

Кажется, что сам запрос работает нормально, за исключением того, что возвращаемый аукцион оценивается лениво, что вызывает сценарий SELECT N + 1.Кто-нибудь может дать предложения о том, как это поле можно оценить с нетерпением?

Заранее спасибо

JP

1 Ответ

0 голосов
/ 08 октября 2011

Путь грубой силы будет (аналогично выбору):

_session.QueryOver<Auction>().WhereRestrictionOn(a => a.Id).IsIn(stats.SelectMany(s => s).OfType<Auction>().Select(a => a.Id).ToArray());
...