OData查询是否可以指定引用嵌套实体的过滤器?

这是设置:我有一个“学生”,有一个相关的实体“课程”(1对多).每个“课程”都有一个相关的实体“期间”,其中包含课程的所有时间和日期详细信息.我想找回所有2011年开设课程的学生.

我试过这个:
〜/ Student()?$expand =课程/期间& $filter =课程/期间/年级eq 2011
但它会导致错误:类型’System.Data.Objects.DataClasses.EntityCollection`1 [[Course]]中没有属性’Period’

很明显,Period被视为属性而不是实体,但我很困惑,因为以下查询确实返回了我期望的结果,并且它使用了几乎相同的语法:
?〜/学生()$展开;课程/期及放大器; $选择=课程/期/年

所以我在使用$filter语法时出错了,还是不可能?

TIA有任何见解.

最佳答案 如果导航属性是单例,则过滤器将起作用,但由于它是一个集合(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.

点赞