2010-07-19 1 views
0

WCF RIA 및 Entity Framework를 통해 관련 데이터를로드하는 데 문제가 있습니다. 그것을 해결하는 방법.Silverlight + WCF RIA + 조건부 하위 레코드 집합을 포함하는 방법 (집합이 아닌 모든 조건 집합 포함)

나는 Room <을 가지고 있습니다 - RoomRecords (startDate/endDate 필드와 부모 Room에 대한 참조를 포함합니다). RoomRecords를로드해야합니다. 시작일> = 1.07.2010 및 종료일 < = 15.07.2010. 학부모 회의실도 포함되어야합니다. Room 속성에 [Include] 속성과 i'm using this approach - 'How to do a Conditional Include'을 사용하여 관련 데이터를 검색하고 있습니다.

문제는 클라이언트 측에서 모든 roomRecords 관련 방을 얻는다는 것입니다 (예 : 시작/끝 날짜가 지난 해의 경우 - 이것은 내가 필요한 것이 아닙니다 - 많은 레코드가있을 것입니다!)하지만 필요합니다 언급 된 조건에 맞는 시작/종료 날짜가있는 RoomRecords가있는 Rooms를 가져 오십시오. 그것을 해결하는 방법은 무엇입니까? 고맙습니다!

답변

1

업!

내가 틀렸던 것처럼 보입니다 - 모든 것이 잘 작동하고 조건부로드가 제대로 작동합니다 ... 죄송합니다!

쿼리 :

 var res = from room in this.ObjectContext.Rooms 
        from rr in room.RoomRecords 
        where 
        (rr.StartDate >= startDate.Date && rr.StartDate < endDate) || 
        (rr.EndDate > startDate.Date && rr.EndDate < endDate) || 
        (rr.StartDate < startDate.Date && rr.EndDate >= endDate) 
        select new { 
         Room = rr.Room, 
         rRec = rr 
        }; 

     var ret = res.AsEnumerable().Select(d => d.Room); 

     var justRoomRecords = ret.SelectMany(r => r.RoomRecords).ToList(); // just to check 

     return ret;