2010-11-18 4 views
1

nHibernate를 사용하면 열 이름이 매핑과 일치하는 한 쉽게 열 이름을 정렬 할 수 있습니다. 따라서 예를 들면 다음과 같습니다.필드 이름이 아닌 열이있는 nHibernate의 AddOrder

Map(Function(x) x.CreatedOn) 


criteria = criteria.AddOrder(New Global.NHibernate.Criterion.Order("CreatedOn", True)) 

위의 모든 것은 편안합니다.

그러나 직접 매핑되지 않고 개체에서 추론 된 속성에 따라 올바른 구문을 가져 오는 데 문제가 있습니다. 나는 후자가 가능한지 확실치 않습니다. 다음을 고려하십시오.

HasMany(Function(x) x.Shipments).Cascade.SaveUpdate() 

Public Overridable ReadOnly Property Items() As IList(Of OrderItem) 
    Get 
     Return Shipments.SelectMany(Function(x) x.Items).ToList().AsReadOnly() 
    End Get 
End Property 

어떻게 하나의 항목으로 주문 하시겠습니까?

criteria = criteria.AddOrder(New Global.NHibernate.Criterion.Order("Items.Count", True)) 

는 "속성 해결할 수 : 항목"의 오류로 리드 :

환호, 매트

답변

1

구성 요소의 한 부분으로 주문하려면, 사용자가 지정하는 것이다 속성 이름 objvious을 시도 그런 다음 구성 요소 부분에서 코드의 객체에 액세스했는지 묻습니다. 두 번째 질문에 대해서는

criteria = criteria.AddOrder(New Global.NHibernate.Criterion.Order("Name.Surname", True)) 

이 쉽게 기준으로 수행되지 않지만 쉽게 HQL 사용하여 작성 할 수 있습니다

query = session.CreateQuery("select s from Shipment s order by size(s.Items)") 
관련 문제