odata - OData 查询能否指定引用嵌套实体的过滤器?

标签 odata

这是设置:我有一个“学生”,他有一个相关的实体“类(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/

相关文章:

asp.net - 嵌套实体上的 odata v4 groupby

c# - 获取相关实体 ASP.NET WebApi OData v4 结果为 "No HTTP resource was found that matches the request URI"

azure - 如何使用 OData 筛选器对逻辑应用中的唯一姓氏筛选 Azure 存储表?

asp.net-web-api - 查询后修改odata结果

sql - 使用适用于 Windows Phone 的 odata 客户端库插入 Unicode 字符串

c# - 如何调用 OData 客户端生成器生成的 OData 函数/操作?

c# - 如何在 webapi 2.2 odata 中进行未绑定(bind)的 POST 操作

c# - 如何使用 ODATA 保存对象属性?

当站点具有全局 AuthorizeAttribute 时,ASP.NET 允许匿名访问 OData $metadata

visual-studio-2012 - 如何在没有 Entity Framework 的情况下使用 OData