Unable to cast object of type 'NHibernate.Hql.Ast.HqlCas

本文关键字:NHibernate Hql Ast HqlCas cast to object of type Unable | 更新日期: 2023-09-27 18:16:29

我使用以下c#代码:

public IList<T> GetAllByExpression(Expression<Func<T, bool>> expression, int startIndex, int count, Func<T, DateTime> dateTimeSelector)
{
    using (ISession session = NHibernateHelper.GetSession())
    {
        return session.Query<T>()
            .Where(expression)
            .OrderBy(dateTimeSelector)
            .Skip(startIndex - 1)
            .Take(count)
            .ToList();
    }
}

更新:甚至下面的代码也会抛出同样的异常:

public IList<T> GetAllByExpression(Expression<Func<T, bool>> expression, int startIndex, int count, Expression<Func<T, DateTime>> dateTimeSelector)
{
    using (ISession session = NHibernateHelper.GetSession())
    {
        return session.Query<T>()
            .Where(expression)
            //.OrderBy(dateTimeSelector)
            //.Skip(startIndex - 1)
            //.Take(count)
            .ToList();
    }
}

得到Nh error:

无法强制转换类型为"NHibernate.Hql.Ast"的对象。HqlCast' to type"NHibernate.Hql.Ast.HqlBooleanExpression"。

我做错了什么?

Unable to cast object of type 'NHibernate.Hql.Ast.HqlCas

问题是我在表达式中写了短条件:as ((a == null)?true: a> b) NH强制转换失败(?)

很可能您在日期时间dateTimeSelector谓词上错过了Expression<>