У меня есть ICriteria для начала, который связан со всеми строками из связанной таблицы базы данных.
I' затем делаю следующее, чтобы получить версию с первой страницей (скажем, 10 элементов из 40):
Код: Выделить всё
ICriteria recordsCriteria = CriteriaTransformer.Clone(criteria);
recordsCriteria.SetFirstResult(0);
recordsCriteria.SetMaxResults(10);
Код: Выделить всё
ICriteria totalAggCriteria = CriteriaTransformer.Clone(criteria);
ICriteria pageAggCriteria = CriteriaTransformer.Clone(recordsCriteria);
Предположим, объекты, возвращающиеся из БД, имеют столбец с именем «ColA» и тип Int32.
Из этого , мне нужна сумма всех 40 значений ColA и сумма первых 10 значений ColA.
Чтобы получить сумму всех 40 значений ColA, я делаю следующее:
Код: Выделить всё
totalAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum("ColA"));
var totalSum = totalAggCriteria.UniqueResult();
Чтобы получить сумму первых 10 значений ColA, я Я пробую следующее:
Код: Выделить всё
pageAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum("ColA"));
vat pageSum = pageAddCriteria.UniqueResult();
Я Я также пробовал следующее, но результат тот же:
Код: Выделить всё
pageAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum(column));
pageAggCriteria.SetFirstResult(firstResult.Value);
pageAggCriteria.SetMaxResults(pageSize.Value);
pageSum = pageAggCriteria.UniqueResult();
Код: Выделить всё
pageAggCriteria.SetFirstResult(firstResult.Value);
pageAggCriteria.SetMaxResults(pageSize.Value);
pageAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum(column));
pageSum = pageAggCriteria.UniqueResult();
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/823 ... ed-results