转载

AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔)

AspNet.WebAPI.OData.ODataPQ

这是针对 Asp.net WebAPI OData 协议下,查询分页。或者是说 本人在使用Asp.Net webAPI 做服务接口时写的一个分页查询服务支持的扩展库。

它支持 MS Asp.Net WebAPI OData 协议下获取记录总数进行分页操作。

其实,分页真的简单,简单得不能再简单了。分页总数,每页大小。就够了,但是怎么都找不到 Asp.Net WebAPI OData 协议下获取总记录数的例子

或者找到例子,按照做了N遍,就是不行,总数就是不给我返回来。

对于获取记录总数 查阅了一些资料、比如 $inlinecount=allpages ,$count=true,经历了很长时间的折腾。

要么就是 告诉我:不支持 $inlinecount查询参数,或者就是 不支持 $count 查询参数。弄得我很是不舒服。多么好的OData,获取一个记录总数都那么难~~~(吐槽下,O(∩_∩)O~)。

在开始使用它之前,先允许我对 AspNet.WebAPI.OData.ODataPQ 啰嗦几句。

AspNet.WebAPI.OData.ODataPQ,是在Nuget.org的包名称,也就是 ID,识别码,在使用的时候可以通过 ” 包控制台命令窗口" 安装、

PM -> Install-package AspNet.WebAPI.OData.ODataPQ [-Version 5.2.2.1]

扩展库名实际是 ODataPQ.dll 这样一个文件。

目前在 nuget 有2个版本。分别是(5.x ,4.x),具体情况见下面

5.2.2.1:最新版本(lasted version,有publicTokenKey)

5.2.2.0:最新版本(lasted version,无publicTokenKey)

这两个版本,就是差一个 publicTokenKey ,建议用 5.2.2.1 这个版本。

如果你的WebAPI项目中的。Microsoft.AspNet.WebApi.OData,也就是引用中的 System.Web.Http.OData 程序集的版本。

是 5.2.2.0 及以上,建议使用这两个版本中的其中一个,不要使用下面4.X版本的库

------------------------------------------------------------------------------------------------------------------------------------------

4.0.30507:(for 程序集 System.Web.Http.OData 4.0.30506版本 有publicTokenKey )

4.0.30506:(for 程序集 System.Web.Http.OData 4.0.30506版本 无publicTokenKey )

这两个版本,就是差一个 publicTokenKey ,建议用 4.0.30507 这个版本。

如果你的WebAPI项目中的 Microsoft.AspNet.WebApi.OData,也就是引用中的 System.Web.Http.OData 程序集的版本。

是 4.0.30506 及以上,建议使用这两个版本中的其中一个,不要使用上面5.X版本的库

-----------------------------------------------------------------------------------------------------------------------------------------

好,啰嗦完了后,下面开始用它来实现最简单的服务(分页查询,/(^o^)/~)

第一步:

创建Asp.Net WebAPI项目,这就不多啰嗦了(。net4.0,.net4.5都可以)

第二步:

确认你的 System.Web.Http.OData 程序集的版本,如果是 4.0.30506 ,安装 ODataPQ 4.0.30507/4.0.30506

“ 程序包管理控制台 ” :PM -> Install-Package  AspNet.WebAPI.OData.ODataPQ -Version 4.0.30507

如果 System.Web.Http.OData  是 5.2.2.0及以上 ,安装 ODataPQ 5.2.2.1/5.2.2.0

“ 程序包管理控制台 ” :PM -> Install-Package  AspNet.WebAPI.OData.ODataPQ [-Version 5.2.2.1]

第三步:

新建一个控制器,叫 ODataPQController,继承自 ApiController 。加一个 Get action方法,在方法上标记一下

OData.ODataPageResult。然后返回 IQueryable<TEntity> 对象。效果图如下。

AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔)

经过以上的配置,ODataPQ的nuget包安装以及服务器端代码编写就算完成。

第四步:

查询参数看看客户端的效果。(查询参数 $filter,$top,$skip等等与OData协议一致。返回的数据中,包括了Data,total字段。这就是我们分页要的东西。总数。)

AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔)

更多可以参考下我(项目源码已经在oschina上开源)另一篇拙笔。

http://www.cnblogs.com/guizhouhehai/p/4524941.html

正文到此结束
Loading...