以下代码(在NHibernate 2.1.2中)有什么问题?
public IEnumerable<EmployeeSummary> List()
{
return Session.CreateCriteria<Employee>("e")
.SetCacheable(true)
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("e.Id"), "Id")
.Add(Projections.Property("e.CurrentOffice.Id"), "CurrentOfficeId")
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(EmployeeSummary)))
.List<EmployeeSummary>();
}
public class EmployeeSummary
{
public Guid Id { get; private set; }
public Guid CurrentOfficeId { get; private set; }
}
我收到以下错误: NHibernate.Exceptions.GenericADOException:无法执行find [SQL:SQL不可用] ----&GT; System.InvalidCastException:无法将类型为'EmployeeSummary'的对象强制转换为'System.Object []'。
答案 0 :(得分:3)
解决了这个问题 - 问题是SetCacheable。您不能将它与AliasToBeanResultTransformer一起使用。
它似乎是NHibernate的bug / bug特性。不确定它是否在以后的版本中得到解决。