2011-12-03 16 views
5

Używam następujący kod C#:Nie można rzutować obiektu typu 'NHibernate.Hql.Ast.HqlCast' do rodzaju „NHibernate.Hql.Ast.HqlBooleanExpression

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

zmiana: nawet kod follwoing rzuca ten sam wyjątek:

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

I dostać Nh błąd:

Unable to cast object of type 'NHibernate.Hql.Ast.HqlCast' to type 'NHibernate.Hql.Ast.HqlBooleanExpression'.

co robię źle?

+0

może być jego wyrazem jesteś dostarczanie do Gdzie to się nie udaje – Baz1nga

Odpowiedz

6

Problem polegał na tym, że napisałem krótki warunek w wyrażeniu: jako ((null ==) prawdziwe: a> b) (?) Odlew NH nie na tym

+0

Potwierdź, że to jest problem. Gdyby ten sam problem i przepisanie wyrażenia rozwiązało problem. Dzięki za udostępnienie! –

+0

Aby uzyskać dobry przykład tego, jak przepisać kod, aby uniknąć tego błędu, można wyświetlić odpowiedź tutaj: http://stackoverflow.com/questions/9774598/conditional-operator-in-linq-expression-causes-nhibernate-exception – humbads

0

Najprawdopodobniej brakuje Ci Expression<> w stosunku do datakatu dateTimeSelector predykatu.

+0

próbowałem skomentować wszystkie: .OrderBy (dateTimeSelector) .Skip (startIndex - 1) .Take (count), a to nie pomogło –

+0

jak wygląda twoje przykładowe połączenie? –

+0

Problem polegał na tym, że napisałem krótki warunek w wyrażeniu: as ((a == null)? True: a> b) Niepowodzenie odlewania NH (?) –

Powiązane problemy