2011-12-03 24 views
5

Tôi đang sử dụng mã C# sau:Không thể cast đối tượng của loại 'NHibernate.Hql.Ast.HqlCast' gõ '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(); 
    } 
} 

update: thậm chí mã follwoing ném cùng một ngoại lệ:

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

Và nhận Nh lỗi:

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

Tôi đang làm gì sai?

+0

được chú ý và sự biểu hiện bạn đang cung cấp đến đâu mà thất bại – Baz1nga

Trả lời

6

Vấn đề là tôi đã viết điều kiện ngắn trong biểu thức: như ((một null ==) đúng:? A> b) (?) NH đúc không thành công trên mà

+0

Có thể xác nhận đây là vấn đề. Đã có cùng một vấn đề và viết lại biểu thức đã giải quyết được vấn đề. Cám ơn vì đã chia sẻ! –

+0

Để có ví dụ tốt về cách viết lại mã để tránh lỗi này, bạn có thể xem câu trả lời tại đây: http://stackoverflow.com/questions/9774598/conditional-operator-in-linq-expression-causes-nhibernate-exception – humbads

0

Hầu hết các bạn có thể bỏ lỡ Expression<> trong thời gian của bạn dateTimeSelector biến vị ngữ.

+0

đã cố gắng để bình luận tất cả: .OrderBy (dateTimeSelector) .Skip (startIndex - 1) . Take (count), và nó không giúp –

+0

cuộc gọi ví dụ của bạn trông như thế nào? –

+0

Vấn đề là tôi đã viết điều kiện ngắn trong biểu thức: như ((a == null)? True: a> b) NH đúc không thành công (?) –

Các vấn đề liên quan