使用@ odata.context的Microsoft ODataController响应

时间:2016-04-06 19:47:24

标签: asp.net-web-api odata

我正在使用这些套餐:

<package id="Microsoft.AspNet.Mvc" version="5.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="3.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.OData" version="5.7.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebPages" version="3.0.0" targetFramework="net45" />
<package id="Microsoft.Data.Edm" version="5.6.0" targetFramework="net45" />
<package id="Microsoft.Data.OData" version="5.6.0" targetFramework="net45" />

我使用这种技术插入了ODataController:

  1. 右键单击Controller文件夹,&#34;添加控制器&#34;
  2. 选择&#34;添加脚手架&#34;列出&#34; Web API 2 ODataController与动作,使用 实体框架&#34;
  3. 为此选择合适的模型和上下文 ODataController
  4. 根据插入的内容修改WebApiConfig.cs 模板
  5. 当我点击我的控制器时,结果不包含@odata.context属性,该属性会抛出angular-odataresources library I'm using

    响应仅包含以下两个属性: {odata.metadata: "...", value: [...]}

    如何使用@ odata.context属性来响应ODataController?

    我尝试使用此功能,但响应没有变化: $format=application/json; odata.metadata=full

    更新

    我刚发现this link 具体做法是:

      

    odata.context注释的名称是&#34; odata.metadata&#34;并且是   没有领导&#34; @&#34;

    写的

    这是否意味着我无法让ODataController返回@odata.context

    作为一种解决方法,我总是可以更改被抛弃的Javascript。

1 个答案:

答案 0 :(得分:3)

Microsoft.AspNet.WebApi.OData支持OData版本1-3,但@odata.context注释特定于版本4.此外,版本3和版本4之间的JSON有效内容格式也有很大差异。

由于您拥有服务代码,因此最好将OData实现升级到v4。它看起来就像ODataAngularResources所期望的那样。卸载Microsoft.AspNet.WebApi.Client并安装Microsoft.AspNet.OData