在尝试标记odata时,可查询属性未在mvc 4 web api中进行编译

ozb*_*zba 8 c# asp.net-mvc odata asp.net-mvc-4 asp.net-web-api

我正在使用visual studio 2012附带的MVC 4 web api.

据我所知,odata不会自动解析,但我们现在需要为动作添加[Queryable]属性.

所以我添加了它:

public class TestController : ApiController
{
    [Queryable]
    public IQueryable<MyClass> GetMyClasses()
    {
       return ...;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个编译错误:

The type or namespace name 'Queryable' could not be found (are you missing a using directive or an assembly reference?) 
Run Code Online (Sandbox Code Playgroud)

odata仍然受支持吗?以及为什么Queryable不被识别为此处列出的属性.

谢谢

Dar*_*rov 15

正如解释在这里,OData的支持已被移动到一个单独的NuGet包.


Sim*_*ver 12

它在这个大会(DLL)中:

 System.Web.Http.OData.dll
Run Code Online (Sandbox Code Playgroud)

此命名空间:

System.Web.Http.QueryableAttribute
Run Code Online (Sandbox Code Playgroud)

在这个nuget包中:

Install-Package Microsoft.AspNet.WebApi.OData
Run Code Online (Sandbox Code Playgroud)

当我安装包但它没有显示为有效类型.即使验证System.Web.Http.OData.dll存在并查看对象资源管理器,我也找不到它.最后我刚刚重启Visual Studio,一切都很好.我怀疑这个DLL的一些旧版本可能会混淆它或类似的东西.