2011-09-14 2 views
4

다음은 설정입니다. 관련 단체 "코스"(1 대 다수)가있는 "학생"이 있습니다. 각 "코스"에는 코스의 모든 시간 및 날짜 세부 정보를 포함하는 관련 엔티티 "기간"이 있습니다. ?
~/학생() $ 확장 = 코스/기간 & $ 필터 = 코스/기간/년 : 나는이 시도했습니다 다시 2011OData 쿼리에서 중첩 엔터티를 참조하는 필터를 지정할 수 있습니까?

의 과정을 가지고있는 모든 학생들을 얻으려면 EQ 2011
하지만 오류 결과는 : No 재산권 '기간'System.Data.Objects.DataClasses.EntityCollection`1는 [[강좌]] 분명히

은, 기간은 속성으로 치료를 받고 '형태로 존재하지 않고 엔티티보다,하지만 혼란 스럽네요. 왜냐하면 다음 질의가 예상 한 결과를 반환하기 때문에 거의 같은 구문을 사용하기 때문입니다.
~/Student()? $ expand = 코스/기간 & $ sele ct = 과정/기간/년

$ 필터 구문에 문제가 있습니까? 그렇지 않습니다.

모든 통찰력을위한 TIA.

답변

2

네비게이션 속성이 싱글 톤일 경우 필터가 작동하지만 컬렉션 (1 : 다수)이므로 필터가 작동하지 않습니다. 주로 그것이 무엇을 의미하는지 명확하지 않기 때문입니다. 2011 년 또는 모든 과정을 수강하는 학생들을 원하십니까? 최신 CTP (http://blogs.msdn.com/b/astoriateam/archive/2011/06/30/announcing-wcf-data-services-june-2011-ctp-for-net4-amp-sl4.aspx) 원하는 작업을 수행 할 수있는 모든 연산자가 지원됩니다. 자세한 내용은 http://www.odata.org/blog/even-more-any-and-all 블로그 게시물을 참조하십시오.

+0

감사합니다. 1 대다수의 관계가 문제 였다고 의심했습니다. 실제로이 문제를 어떻게 처리해야하는지 설명해 주셔서 감사합니다. 어느 googlers든지를위한 – Mike

+3

, 나는 또한 도움이되는이 이렇게 질문을 찾아 냈다 : http://stackoverflow.com/a/16967841/183624 –

0

예 가능합니다. 이런 식으로 사용해야합니다.

~/Student()?$expand=Course/Period&$filter=Course/any(d:d/Period/Year eq 2011) 

Course/any()

컬렉션에서 아무것도 ()의 표현과 일치하는지 보인다.

d:은 컬렉션의 반복자를 지정합니다.이 반복자는 d/Period/Year에서 참조됩니다.

참조는 OData Documentation에서 찾을 수 있습니다. 5.1.1.10.1 절 ("/ any"로 검색)에서 참조하십시오.

참고 :/all을 사용하여 모든 코스가 몇 가지 기준과 일치하는지 확인할 수도 있습니다.

관련 문제