ORM으로 NHibernate를 사용하고 일부 데이터를 정렬하려고합니다. 데이터를 페이징해야합니다.NHibernate 정렬 (두 번째 옵션으로 SQL)
내 요청 테이블의 두 열은 UrgencyID 및 CreateDate입니다. UrgencyID는 정적 데이터가있는 긴급 테이블에 대한 FK입니다. 1 = 낮음, 2 = 보통, 3 = 높음, 4 = 위험.
다음과 같은 방법으로 요청을 주문해야합니다.
내림차순 CreateDate에 의해 다른 모든 요청을 내림차순 CreateDate하여 중요한 요청은 그래서 요청의 내 목록은 항상 CreateDate의 상단에 내림차순하고 다른 모든 요청 CreateDate 내림차순으로 (UrgencyID를 무시)
이인가하여 핵심해야 NHibernate (Criteria API 사용)에서이 정렬 순서를 수행 할 수 있습니까?
그렇지 않은 경우 SQL에서 어떻게 처리합니까? 저장 프로 시저에서?
편집 :이 같은 SQL 문자열의 this_ 접두사를 사용 @DanP 및 @Michael Pakhantsov
모두에 솔루션 덕분에 기본 테이블 선택의 기본 NHibernate에 접두사입니다.
public class OperatorJobQueueOrder : Order
{
public OperatorJobQueueOrder() : base("", true) { }
public override NHibernate.SqlCommand.SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
{
return new NHibernate.SqlCommand.SqlString("case this_.JobRequestUrgencyID when 4 then 4 else 0 end desc, this_.CreatedDate");
}
}
도움을 주셔서 감사합니다. 두 답변을 통해 결과를 얻을 수있었습니다 - 사용자 지정 NHibernate 정렬과 함께 제공 한 SQL을 사용하십시오. 부분적으로 질문에 대답하는 사람들에게 상을 수여 할 수 있습니까? –
@Ciaran : 마이클이 먼저 대답했습니다. 당신은 그의 대답을 받아 들여야합니다. 당신이 우리의 답을 조합하여 사용한다면; 게시물을 편집하여 완벽한 솔루션을 포함시켜보십시오. – DanP