2014-06-05 51 views
3

我正处于基于EntityFramework,WebApi和Odata的开发项目中。将WebApi OData v3项目升级到OData v4

我开始这个项目时,OData v3是最新的,并创建了一些从EntitySetController派生的控制器。

我试图升级我的项目支持的OData v4的使用从OData的团队的最新版本。

有一些命名空间,并在第4版的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类的代码可用,这样我可以把它变成我的项目?

回答

0

对于更新EntitySetController类,这里是建议:

a。继承ODataController代替EntitySetController

湾而不是void,用户类型,HttpResponseMessage和CLR类型,从您的操作返回IQueryable,SingleResult,IHttpActionResult

希望它能帮上忙。

+1

感谢您的回复。我决定创建一个新的WebApi项目,并使用您的建议重建所有现有的控制器。 不幸的是,我无法确定要安装的一组正确的Nuget软件包以支持OData V4。 OData V4是否仍需要WebstackNightly上的Web API 2.2的预发布版本? 是否有OData V4所需的Nuget软件包的名称和来源列表? – AndyDBell

+0

仅在WebAPI 2.2(使用RTM版本的软件包)之上实施OData V4的过程中。请注意:OData V4有一些奇怪的行为atm。例如,$ metadata只能以XML格式提供,查询结果(带有$ select/$ expand)只能以JSON格式提供。 DataJS/BreezeJS的当前版本不符合V4(尚未)并且不能一起工作。 (预期的HTTP标题不同,WebAPI控制器/格式化程序使用的差异)。 –