使用nHibernate 2.2分组

时间:2016-10-03 18:00:00

标签: c# nhibernate-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();

但我总是收到以下错误:

  

无法解析属性:Writers.Domain.Order的名称。

enter image description here

请帮助解决这个问题。

1 个答案:

答案 0 :(得分:0)

您收到的错误表明Writers.Domain.Order对象没有名为Name的属性。您的Writers.Domain.Order对象上是否有Name属性?您的数据库中的orders表格是否有Name列?如果缺少其中任何一个,您可能会收到这样的错误。