5 votes

Impossible de convertir un objet de type 'NHibernate.Hql.Ast.HqlCast' en un objet de type 'NHibernate.Hql.Ast.HqlBooleanExpression'.

J'utilise le code c# suivant :

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();
    }
}

mettre à jour : même le code suivant jette la même exception :

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();
    }
}

Et obtenir l'erreur Nh :

Impossible de convertir un objet de type 'NHibernate.Hql.Ast.HqlCast' en un objet de type NHibernate.Hql.Ast.HqlBooleanExpression'.

qu'est-ce que je fais mal ?

6voto

user1065869 Points 817

Le problème est que j'ai écrit une condition courte dans l'expression : as ((a == null) ? true : a > b) NH casting échoue sur cela ( ?)

1voto

Wiktor Zychla Points 23918

Vous manquez probablement Expression<> sur votre date dateTimeSelector prédicat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X