首先,使用 ASP.NET WebApi 教程,我创建了一个基本的ApiController,它通过 OData 公开一个实体框架模型。该服务用于为 OData $filter 查询返回 json。
当我在多值属性上执行包含“任何”或“所有”查询的OData $filter 查询时,它会引发 ODataException
这是我尝试使用的 OData 查询
~/api/Blogs?$filter=any(Tags,Name+eq+'csharp')
我的 ApiController 看起来像这样:
public class BlogController : ApiController
{
public BlogsController()
{
this.Entities = new BlogEntities();
}
public ContactEntities Entities { get; set; }
[Queryable(PageSize = 25, AllowedQueryOptions = AllowedQueryOptions.All)]
public IQueryable<Blog> Get()
{
return this.Entities.Blogs;
}
}
博客实体有这个合同
public Blog {
public Guid ID { get; set; }
public string Title { get; set; }
public Tag Tags { get; set; }
}
public Tag {
public Guid ID { get; set; }
public string Name { get; set; }
}
抛出的异常
ODataException: Type 'Blog' does not have a property 'Name'
如您所见,我的代码中没有任何异常,一切都应该正常工作。Microsoft ASP.NET Web API OData是否可能不支持“任何”和“所有”查询?