문자열 변수에 저장된 열 이름을 기반으로 NHibernate 3.0 Linq 쿼리를 동적으로 정렬하려고합니다.제공된 속성 이름을 기반으로 NHibernate 3.0 Linq 쿼리를 주문하는 방법
// The value of this variable can be the name of any property of Document.
string columnName = "column1";
var query = from n in Session.Query<Document>()
where n.DocumentNumber == documentNumber
// how to order by the value of columnName?
select n;
orderby
키워드는 문자열을 받아 (또는 변수)하지만 난 실행할 때 다음을 수행합니다
:가 실행할 수 없습니다 쿼리
var query = from n in Session.Query<Document>()
where n.DocumentNumber == documentNumber
orderby columnName
select n;
나는이 예외가
select TOP (@p0)
accumulate0_.Id as Id9_,
accumulate0_.DocumentNumber as Documen10_9_
from dbo.Documents accumulate0_
where
[email protected]
order by @p2 desc
ORDER BY 1로 식별되는 SELECT 항목에는 열 위치를 식별하는 표현식의 부분 으로 변수가 포함됩니다. 변수는 이 열 이름을 참조하는 식으로 정렬 할 때만 허용됩니다.
나는 문자열
을 허용
에서 작동합니다. 그러나 NHibernate 3.0을 사용할 때 예외를 throw합니다..OrderBy
확장자 방법의 과부하를 제공하는
LINQ Dynamic Query Library이 알고 있지만, 분명히 전용 메모리
생성 된 SQL 쿼리에 ORDER BY
문에 적절한 열 이름이 지정되어 있으므로 NHibernate 영역에 있어야합니다.
NHibernate 기준을 사용하면 동적으로 정렬 할 수 있지만 NHibernate Linq를 사용하기 때문에 기준 기능에 액세스 할 수있는 것 같지 않습니다. 내가 NHibernate에 Linq를 사용하고 있기 때문에
그럼 내가 잘못 생각한 것 같아.하지만 슬픈 듯이 Dynamic LINQ OrderBy는 NHibernate 3.0을 사용할 때 예외를 던진다. (예전에는 기억이 안 난다. 버전. –
예외를 붙여 넣으면 도움을 줄 수 있습니다. –
그 동안 무슨 일이 일어 났는지는 모르겠지만 동적 인 Linq OrderBy 메서드를 시도해 보았습니다. 열 이름을 문자열로 제공하면 작동합니다! 감사! –