2016-02-16供稿中心: 北大青鳥武漢中南軟件學院
AspNet.WebAPI.OData.ODataPQ
這是針對 Asp.net WebAPI OData 協議下,查詢分頁?;蛘呤钦f 本人在使用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
經過以上的配置,ODataPQ的nuget包安裝以及服務器端代碼編寫就算完成。
第四步:
查詢參數看看客戶端的效果。(查詢參數 $filter,$top,$skip等等與OData協議一致。返回的數據中,包括了Data,total字段。這就是我們分頁要的東西??倲?。)