一尘不染

无法将类型为“ NHibernate.Hql.Ast.HqlCast”的对象转换为类型为“ NHibernate.Hql.Ast.HqlBooleanExpression”的对象

sql

我正在使用以下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错误:

无法将类型为“ NHibernate.Hql.Ast.HqlCast”的对象强制转换为类型为“
NHibernate.Hql.Ast.HqlBooleanExpression”的对象。

我究竟做错了什么?


阅读 128

收藏
2021-05-23

共1个答案

一尘不染

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

2021-05-23