Как лучше всего получить совокупные результаты от NHibernate?

Например, я пытаюсь получить минимальную дату, максимальную дату и сумму в разных случаях. Я пытаюсь избежать жесткого кодирования строки SQL или перебора IList для получения этих значений.


person Mark Struzinski    schedule 14.10.2008    source источник


Ответы (2)


Вы можете выполнять прямые запросы через NHibernate. Или добавьте дополнительный порядок по информации, чтобы результирующие объекты были упорядочены с помощью интересующего вас параметра. Порядок убывания, а ваш 0-й элемент - это то, что вам нужно для максимума и минуты. и т.д. и т.п. Есть несколько способов снять шкуру с спящего кота.

person mspmsp    schedule 14.10.2008
comment
Я думал, что в Criteria API может быть что-то, чего мне не хватало. Спасибо за совет. Отлично сработало с родом! - person Mark Struzinski; 14.10.2008

Если вам нужны запросы для отчетов, используйте прогнозы.

Что-то типа:

Session.CreateCriteria ( typeof ( Order ) )
            .Add ( Restrictions.Between ( "DateReceived" , today.AddMonths ( -1 ) , today ) )
            .CreateAlias ( "Lines" , "lines" )
            .SetProjection (
            Projections.ProjectionList ( )
                .Add ( Projections.Sum ( "lines.TotalCost" ) )
                .Add ( Projections.Avg ( "lines.TotalCost" ) )
                .Add ( Projections.GroupProperty ( "Customer" ) )
            ) ;

Дополнительную информацию можно найти в документации Nhibernate (это 2/3 пути вниз)

person kͩeͣmͮpͥ ͩ    schedule 17.10.2008