NHibernate – Как использовать проект суммы для постраничных результатовC#

Место общения программистов C#
Anonymous
NHibernate – Как использовать проект суммы для постраничных результатов

Сообщение Anonymous »

Я пытаюсь использовать разбиение на страницы в сочетании с проекцией суммы, чтобы получить сумму значений в столбце только для интересующей меня страницы результатов. Я использую .NET, C# и NHibernate 3.1< /p>

У меня есть ICriteria для начала, который связан со всеми строками из связанной таблицы базы данных.

I' затем делаю следующее, чтобы получить версию с первой страницей (скажем, 10 элементов из 40):

Код: Выделить всё

ICriteria recordsCriteria = CriteriaTransformer.Clone(criteria);
recordsCriteria.SetFirstResult(0);
recordsCriteria.SetMaxResults(10);
Я использую этот ICriteria для чего-то другого, поэтому создаю еще два клона:

Код: Выделить всё

ICriteria totalAggCriteria = CriteriaTransformer.Clone(criteria);
ICriteria pageAggCriteria = CriteriaTransformer.Clone(recordsCriteria);
Если я загляну внутрь этих двух новых, в первой будет 40 элементов, а во второй — 10 — именно то, что мне нужно.

Предположим, объекты, возвращающиеся из БД, имеют столбец с именем «ColA» и тип Int32.

Из этого , мне нужна сумма всех 40 значений ColA и сумма первых 10 значений ColA.

Чтобы получить сумму всех 40 значений ColA, я делаю следующее:

Код: Выделить всё

totalAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum("ColA"));
var totalSum = totalAggCriteria.UniqueResult();
Значение в TotalSum правильное.

Чтобы получить сумму первых 10 значений ColA, я Я пробую следующее:

Код: Выделить всё

pageAggCriteria.SetProjection(NHibernate.Criterion.Projections.Sum("ColA"));
vat pageSum = pageAddCriteria.UniqueResult();
Однако это дает мне то же значение, что и предыдущее — для всех 40 значений ColA.

Я Я также пробовал следующее, но результат тот же:

Код: Выделить всё

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();
Может ли кто-нибудь подсказать, где я ошибаюсь и как мне на самом деле получить сумму значений ColA в первых 10 результатах?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/823 ... ed-results

Вернуться в «C#»