这是查询:
var reportingGroupYears = _session.QueryOver<ReportingGroup>()
.Where(x => x.Number == request.ReportingGroupNumber)
.Select(rg=> rg.Year.ToString())
.List<string>();
我不明白它有什么问题。也不允许将'rg'定义为字符串,因为它给出的消息是rg与父范围中定义的含义不同。
答案 0 :(得分: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>();