Пожалуйста, помогите мне со следующим вопросом:Group By с NHibernate 2.2
Я работаю с NHibernate 2.2, VS 2008 и MySQL Db.
У меня есть рабочий SQL скрипт:
select s.name, count(o.id) from orders o
inner join writers w
on o.assigned_to = w.id
inner join sites s
on s.id = w.site_id
where o.date between '2014-09-22 00:00:00' and '2014-09-29 00:00:00'
group by s.name
Я пытаюсь реализовать его с NHibernate 2.2:
var collection = NHibernateManager.Session.CreateCriteria(typeof(Writers.Domain.Order),() => orderAlias)
.CreateAlias(() => orderAlias.AssignedWriter,() => writerAlias, JoinType.InnerJoin)
.CreateAlias(() => writerAlias.Site,() => siteAlias, JoinType.InnerJoin)
.Add(() => writerAlias.RegDate > period.From)
.Add(() => writerAlias.RegDate < period.To)
.SetProjection(Projections.ProjectionList()
.Add(Projections.GroupProperty(ReflectionHelper.GetMemberName((Site s) => s.Name)))
.Add(Projections.Count(ReflectionHelper.GetMemberName((Writers.Domain.Order o) => o.OrderId)), "OrderId")
).List();
Но я всегда получаю следующее сообщение об ошибке:
Could not resolve property: Name of Writers.Domain.Order.
Пожалуйста, помогите с решением этой проблемы.
Конечно, у предмета заказа нет никакого свойства «Имя». Но я группирую свойство «Имя» сайта. И объект сайта имеет это свойство. Я вижу, что я могу использовать только свойства Order в проекции. Но как быть, если мне нужно использовать свойства других объектов домена, таких как «Сайт» в моем примере? – Askold