Невозможно привести объект типа 'NHibernate.Hql.Ast.HqlCast' к типу 'NHibernate.Hql.Ast.HqlBooleanExpression. - PullRequest
5 голосов
/ 03 декабря 2011

Я использую следующий код 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'.

что яделаешь неправильно?

Ответы [ 2 ]

6 голосов
/ 04 декабря 2011

Проблема заключалась в том, что я написал короткое условие в выражении: as ((a == null)? True: a> b) Не удается выполнить преобразование NH на этом (?)

1 голос
/ 03 декабря 2011

Скорее всего, вы пропустили Expression<> сверх предиката даты-времени dateTimeSelector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...