1

这是查询:

 var reportingGroupYears = _session.QueryOver<ReportingGroup>()
                            .Where(x => x.Number == request.ReportingGroupNumber)
                            .Select(rg=> rg.Year.ToString())
                            .List<string>();

我不明白它有什么问题。也不允许将 'rg' 定义为字符串,因为它给出的消息是它会给 rg 赋予与父范围中定义的含义不同的含义。

4

1 回答 1

1

在这种情况下,该Select子句是 NHibernate 的一个问题。它期望将属性(在表达式树解析期间)转换为 SELECT 语句。但是有一个方法调用:.ToString().

如何解决它的一种方法,可以Projection像这样明确(参见文档 QueryOver 16.6. Projections

var reportingGroupYears = session
    .QueryOver<ReportingGroup>()
    .Where(x => x.Number == request.ReportingGroupNumber)
    .Select(Projections.ProjectionList()
        .Add(Projections.Cast(NHibernateUtil.String, Projections.Property("Year"))
        ))
        .List<string>();
于 2013-08-24T04:56:59.693 回答