NHibernate:使用AliasToBeanResultTransformer时出现InvalidCastException

时间:2011-05-24 02:41:31

标签: nhibernate

以下代码(在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 []'。

1 个答案:

答案 0 :(得分:3)

解决了这个问题 - 问题是SetCacheable。您不能将它与AliasToBeanResultTransformer一起使用。

它似乎是NHibernate的bug / bug特性。不确定它是否在以后的版本中得到解决。