2010-12-28 3 views
0

기본 직원 개체와 관련 메시지 개체 집합으로 구성된 개체 그래프가 있습니다.WCF 데이터 서비스 - 기준에 따라 반환 된 관련 개체 제한

직원 속성 (예 : 팀)에 대한 검색 기준에 따라 직원 개체를 반환 할 수 있습니다. 그러나 메시지를 확장하면 메시지 전체가 다시 수집됩니다. 상위 n 개의 메시지 (최근 10 개로 제한)를 사용하거나 메시지 개체의 날짜 범위를 사용하여 얼마나 많은 메시지가 다시 가져 오기를 제한 할 수 있는지 알고 싶습니다. 메시지의 속성을 필터링하려고하면 오류가 발생합니다 (& $ filter = employee/message/StartDate는 " 어떤 재산 '의 startDate가'형에 존재하지 않는 'System.Data.Objects.DataClasses.EntityCollection`1). 중 하나가 작동하지 않는 메시지와 관련된 객체에 톱을 사용하려고

. 나는 또한 사용하여 시도했다

직원 ID의 문자열 목록을 취하는 WebGet 확장. 목록이 너무 길어질 때까지 작동 한 다음 URL이 너무 길어서 실패합니다 (페이징 메커니즘을 설정하는 것이 가능할 수도 있음). ...

내가 사용하고있는 UI 컨트롤은 데이터가 상당히 특정한 계층 적 모양이어야하기 때문에 메시지 쪽에서 시작하고 거꾸로 작업 할 때 쉽게 알 수 없습니다.

wcf 데이터 서비스를 사용하여 여러 통화를 수행하는 방법을 아는 사람이 있습니까?

감사합니다. M.

답변

0

이렇게하는 유일한 방법은 실제로 쿼리의 방향을 바꾸는 것입니다.

그래서 Employee에서 시작하는 대신 메시지 측면에서 시작합니다. 직원 속성을 다시 필터링하고 Messages 컬렉션을 제한 할 수 있습니다. 그것의 이상적인 것은, 내가하려고하는 것에 대해 직원에게 다시 중심을두기 위해 컬렉션을 반복하는 것을 의미하지만 작동 할 것입니다. 실버 라이트와 리치 클라이언트의 비동기 성질은 최소한 여분의 반복이 필요하다는 것을 의미하지만, 여전히 상당히 빠르다.

또 다른 흥미로운 점은 odata/wcf 데이터 서비스의 현재 버전은 상속 된 클래스의 속성에 대한 쿼리를 지원하지 않기 때문에 시작/종료 날짜 속성을 기본 클래스까지 옮겨야 만 가능하다는 것입니다. 그 (것)들에 나의 수색을 제한하기 위하여.

http://Site/Service.svc/Messages()?& $ 필터 = 직원/OfficeName EQ '토론토'와 (년 (STARTDATE) EQ 2010 년과 월 (STARTDATE) GE 9)