2009-05-05 3 views
0

이것은 부분적으로 this과 관련 있습니다.
Nhibernate 쿼리에서 직접 연결된 (HasMany) 컬렉션 결과를 정렬하는 방법을 찾고 싶습니다.Nhibernate 쿼리에서 연결된 컬렉션 정렬하기

ICriteria criteria = Session.CreateCriteria(typeof(PortalPage)); 
criteria.CreateAlias("PartialViews", "vc"); 
criteria.AddOrder(Order.Asc("vc.ColumnNumber")); 
criteria.Add(Property.ForName("Url").Eq(pageUrl)); 
return criteria.UniqueResult<PortalPage>(); 

ORDER BY를 사용하여 select를 생성하지만 링크 된 컬렉션의 결과가 정렬되지 않습니다.

결과가 반환 된 후 컬렉션을 정렬하지 않도록하고 싶습니다 (linq 개체를 사용하는 것처럼) 가능합니다?

UPDATE :

HasMany(x => x.PartialViews).KeyColumnNames.Add("PageId").AsBag().SetAttribute("order-by", "ColumnNumber"); 

답변

1

당신이 목록 유형보다는 가방 세트 나 컬렉션을 지정한 : 스티브 문제가 하드 같은 매핑에서 주문 속성을 코딩하여 해결할 수 있습니다 제안 으로? 목록 매핑 유형을 사용하고 목록 매핑에 대해 인덱스 열을 지정하면 모든 것이 처리되어야합니다.

을 참조하십시오. 두 번째 사람은 이전 게시물이므로 변경되었을 수있는 사항을주의하시기 바랍니다. more info here도 있습니다.

HasMany(x => x.Images).AsList(x => x.WithColumn("Position")); 
+0

스티브, 내가 이해한다면이가 "하드 코드 나 강제 :

<list name="Images table="Images"> <key column="Id"/> <index column="Position"/> <element type="String" column="FileName"/> </list> 

이 예제의 유창한 매핑이 같은 것 : 여기

간단한 목록을 수집 매핑 예제 "정렬 순서. Linq2Nhibernate 또는 다른 방법으로 어떤 종류의 동적 결과를 얻을 수 있습니까? 유창한 nhibernate에서 같은 매핑을 어떻게 표현 하시겠습니까? – Ronnie

+0

Ronnie, OrderBy 메서드를 사용하여 컬렉션을 반환 한 후 정렬하지 않고 동적 결과를 얻지 못했습니다. DDD 객체 모델에서 하위 컬렉션의 본성 때문에 하위 컬렉션에 고유 한 정렬 순서 (예 : List 또는 Set가 아닌 List)가없는 한 신뢰할 수있는 방법이 없다고 판단됩니다. 모델링 관점에서 보면 데이터를 검색 할 때 순서를 지정할 수 있습니다. 목록 매핑을 위해 Fluent 구문을 확인해야 할 것입니다. 찾은 답을 업데이트 할 것입니다! –

관련 문제