【问题标题】:Upgrading WebApi OData v3 project to OData v4将 WebApi OData v3 项目升级到 OData v4
【发布时间】:2014-07-26 01:42:11
【问题描述】:

我正在进行基于 EntityFramework、WebApi 和 Odata 的开发项目。

我在 OData v3 是最新版本时开始了这个项目,并创建了许多从 EntitySetController 派生的控制器。

我已尝试使用 OData 团队的最新版本升级我的项目以支持 oData v4。

v4 Nuget 包中有许多命名空间和其他更改。http://blogs.msdn.com/b/webdev/archive/2014/03/13/getting-started-with-asp-net-web-api-2-2-for-odata-v4-0.aspx

我认为我已经解决了这些问题,但是似乎 EntitySetController 已从 v4 的代码库中删除。 http://aspnetwebstack.codeplex.com/workitem/1715

升级代码的最佳方法是什么?

已弃用的 EntitySetController 类的代码是否可用,以便我可以将其引入我的项目?

【问题讨论】:

    标签: asp.net-web-api odata


    【解决方案1】:

    对于更新 EntitySetController 类,建议如下:

    一个。继承自 ODataController 而不是 EntitySetController

    b.从您的操作中返回 IQueryable、SingleResult、IHttpActionResult 而不是 void、用户类型、HttpResponseMessage 和 CLR 类型

    希望它会有所帮助。

    【讨论】:

    • 感谢您的回复。我决定创建一个新的 WebApi 项目并使用您的建议重建我所有现有的控制器。不幸的是,我无法确定要安装的正确 Nuget 包集以支持 OData V4。 OData V4 是否仍需要 WebstackNightly 上的 Web API 2.2 预发布版本?是否有任何地方 OData V4 所需的 Nuget 包的名称和来源列表?
    • 就在 WebAPI 2.2 之上的 OData V4 实现的中间(使用 RTM 版本的包)。请注意:OData V4 有一些奇怪的行为 atm。就像,$metadata 仅以 XML 格式提供,查询结果(使用 $select/$expand)仅以 JSON 格式提供。当前版本的 DataJS/BreezeJS 不兼容 V4(还)并且不能一起工作。 (预期 HTTP 标头的差异,WebAPI 控制器/格式化程序使用的差异)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2015-04-16
    • 2017-08-09
    • 2016-02-27
    • 2015-11-06
    • 2014-10-29
    • 1970-01-01
    相关资源
    最近更新 更多