将WebApi OData v3项目升级为OData v4

4

我正在开发一个基于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

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

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

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

1个回答

0

关于更新EntitySetController类,这里有一个建议:

a. 继承自ODataController而不是EntitySetController

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

希望能对您有所帮助。


2
感谢您的回复。我决定创建一个新的WebApi项目,并使用您的建议重建所有现有的控制器。 不幸的是,我无法确定正确的Nuget软件包集以支持OData V4。 OData V4是否仍需要在WebstackNightly上使用Web API 2.2的预发布版本? 是否有任何关于所需的OData V4 Nuget软件包名称和来源的列表? - AndyDBell
正在使用WebAPI 2.2(使用软件包的RTM版本)实现OData V4。请注意:OData V4目前存在一些奇怪的行为。例如,$metadata仅以XML格式提供,带有$select/$expand的查询结果仅以JSON格式提供。当前版本的DataJS/BreezeJS不符合V4标准(尚未),因此无法一起使用(预期的HTTP头文件不同,WebAPI控制器/格式化程序使用方式不同)。 - Marvin Smit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接