2011-08-25 8 views
0

나는 노력 엔티티와 스케줄 엔티티를 가지고있다. 일정 엔티티는 작업이 표시되는 페이지를 나타냅니다. 각 작업마다 각 일정 페이지마다 별도의 주문이있을 수 있습니다. NHibernate 기준 일대 다 관계 (리스트 속성)에서 정렬

그래서이 경우에 가장 적합한 DB 구조가이

노력과 같을 것이다 -> (위치 포함) ScheduleOrder < - 일정 그래서 일대와 대일.

이제 NHibernate 기준에 따라 페이지에서 노력을 정렬해야합니다.

그래서 각 일정에 대해 위치를 반환하는 속성을 사용해야합니다. 사용자 지정 선택 쿼리를 사용하여 DB보기 또는 속성을 사용하여이 작업을 수행 할 수 있습니다.

누구나 일대 다 관계에서 더 나은 방식으로 정렬하는 방법을 알고 있습니까?

답변

0

class ScheduleOrder 
{ 
    public virtual Effort Effort { get; set; } 
    public virtual Schedule Schedule { get; set; } 
    public virtual int Position { get; set; } 
} 

var efforts = session.CreateCriteria<ScheduleOrder>() 
    .Add(Expression.Eq("Schedule", schedule)) 
    .AddOrder(Order.Asc("Position")) 
    .SetFetchMode("Effort", FetchMode.Eager) 
    .List() 
    .Select(so => so.Effort); 

와 함께 또는

class Schedule 
{ 
    // LIst has a position 
    public virtual IList<Effort> Efforts { get; set; } 
} 

HasMany(x => x.Efforts) 
    .AsList("position"); 
// or 
HasManyToMany(x => x.Efforts) 
    .AsList("position"); 


// schedule.Efforts have the right order