2012-12-03 3 views
2

카드 클래스가 있습니다. 이 클래스는 코드 문자열을 문자열 유형별로가집니다. 코드의 일부를 선택하기 위해 linq-to-NHibernte 쿼리를 사용합니다. 18950,9850 및 결과 18950 인 기대 결과 9850이다 :이 항목의 예를 들어 데이터linq에서 nhibernate까지의 최대 문자열 선택 방법

var q = SessionInstance.Query<Card>() 
     .Max(x => x.Code); 

이다.

는 내가이 쿼리 변경 :

var q = SessionInstance.Query<Card>() 
     .Max(x => int.Parse(x.Code)); 

을하지만 쿼리 이상이 메시지에 의해 런타임 예외가 있습니다

Expression type 'NhMaxExpression' is not supported by this SelectClauseVisitor. 

왜?

답변

1

NHibernate는 int.Parse SQL 호출을 변환하는 방법을 모른다.

가장 쉬운 해결책은 SQL을 사용하는 것입니다.

더 복잡하고 재미있다 : NHibernate LINQ 제공자를 확장하여 해당 호출을 지원한다. 일부 링크의 경우 Google extending nhibernate linq