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


    出处:http://www.bubuko.com/infodetail-827612.html

    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> 对象。效果图如下。

      技术分享

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

    第四步:

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

      技术分享

      

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

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

  • 相关阅读:
    未能从程序集 C:Program Files (x86)MSBuild14.0inMicrosoft.Data.Entity.Build.Tasks.dll 加载任务“EntityClean”
    asp.net mvc 4 项目升级到 asp.net mvc5
    SQL Server查看所有表大小,所占空间
    0x80072f8a未指定的错误
    vs2012 aps.net4.0/4.5尚未在web服务器上注册
    vsphere 出现“在主机的当前连接状况下不允许执行该操作”
    sql server 发布时提示'dbo.sysmergepublications'无效的解决办法
    sql server更改机器名后更改数据库机器名
    Ajax向后台传入File类型参数
    上传下载Azure Blob里的Excel文件。
  • 原文地址:https://www.cnblogs.com/smileberry/p/7063380.html
Copyright © 2020-2023  润新知