这是设置:我有一个“学生”,他有一个相关的实体“类(class)”(一对多)。每个“类(class)”都有一个相关实体“期间”,其中包含类(class)的所有时间和日期详细信息。我想找回所有在 2011 年参加过类(class)的学生。
我试过这个:
~/Student()?$expand=Course/Period&$filter=Course/Period/Year eq 2011
但这会导致错误:“System.Data.Objects.DataClasses.EntityCollection`1[[Course]] 类型中不存在属性“Period”
显然,Period 被视为属性而不是实体,但我很困惑,因为以下查询确实返回了我期望的结果,并且它使用几乎相同的语法:
~/Student()?$expand=Course/Period&$select=Course/Period/Year
那么我在 $filter 语法上做错了什么,或者这是不可能的吗?
TIA 的任何见解。
最佳答案
如果导航属性是单例,过滤器将起作用,但由于它是一个集合(一对多),过滤器将不起作用。主要是因为不清楚这意味着什么。你想要学生在 2011 年完成所有类(class)还是只是一些......等等。
在最新的 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 .
关于odata - OData 查询能否指定引用嵌套实体的过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7412722/