webAPI OData v4功能注册

时间:2015-08-13 15:26:08

标签: function odata asp.net-web-api2

通过这样做设置我的WebAPI OData端点......

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint

然后我尝试按照"示例添加一个函数:添加一个函数"这个部分的底部......

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/odata-actions-and-functions

我遇到了一个问题,因为方法调用" builder.EntityType()"不存在,但其他一切都正常运行。

是否有一些我不了解的特殊依赖? 我正在使用来自nuget的OData v4软件包5.6.0版(最新稳定版)并编译.Net 4.6。

编辑: 我尝试更新对OData包的5.7.0-rc版本的引用,但这确实解决了它,这里我们关注的是我的packages.config ...

<packages>
  <package id="EntityFramework" version="6.1.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.OData" version="5.7.0-rc" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Cors" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.Data.Edm" version="5.6.4" targetFramework="net46" />
  <package id="Microsoft.Data.OData" version="5.6.4" targetFramework="net46" />
  <package id="Microsoft.OData.Core" version="6.13.0" targetFramework="net46" />
  <package id="Microsoft.OData.Edm" version="6.13.0" targetFramework="net46" />
  <package id="Microsoft.Spatial" version="6.13.0" targetFramework="net46" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net46" />
</packages>

我正在使用像ninject这样的其他一些东西做一些DI的东西,但我没有把这些东西包括在内以保持这个问题的简短。

1 个答案:

答案 0 :(得分:0)

好的,原因是我的bin文件夹中有5.5.1.0版本的软件包,尽管有一个程序集绑定,但它仍然选择使用后来的5.7.0.0版本。

另外,为了真正弄乱我的脑子微软已经移动了一堆东西,一些使用语句必须在我的课程中更改(可能为什么我的代码使用旧版本)......

旧用法:

using Microsoft.Data.Edm;
using System.Web.Http.OData.Builder;

新用法:

using Microsoft.OData.Edm;
using System.Web.OData.Builder;
using System.Web.OData.Extensions;

可能值得注意的是,由于演练没有提及使用或版本号,它只是说&#34;我们使用OData v4&#34; ......一如既往地有用!

我不得不深入研究codeplex上的源代码以找到答案,但基本上该演练基于5.7.0.0或更高版本的软件包。