在 EF Core 中,資料的查詢通過內建語言查詢(LINQ)實作,它支援強類型,支援對 DbContext 派生類的 DbSet 類型成員進行通路,DbSet 類實作了 IQueryable 和 IEnumerable 接口,LINQ 形式的查詢會通過資料庫提供程式轉換為資料庫查詢語言,并最終傳回實體集合
接下來,在 Library.API 項目中實作分頁功能
添加一個 AuthorResourceParameters 類
修改 GetAuthorsAsync 方法實作分頁
完成之後可以請求 URL: http://localhost:5001/api/author?pageNumber=2&pageSize=3
添加分頁中繼資料
首先建立一個分頁清單類
在 IAuthorRepository 添加一個方法
在 AuthorRepository 添加實作方法
為了使建立 PagedList 的邏輯具有通用性,可以在 PagedList 類中添加一個靜态方法 CreateAsync
在 GetAllAsync 中使用
接下來,在 AuthorController 中重構 GetAuthorsAsync 代碼
以 Get 方法請求 URL 後,伺服器不僅傳回所請求的資源,并且在響應的消息頭中包含了分頁中繼資料,可以通過 previousePageLink,nextPageLink 的 URL 值直接通路上一頁以及下一頁資料
過濾,是對資源的一個或多個屬性與指定的參數值進行比對并篩選
通過出生地過濾作者,首先在 AuthorResourceParameters 中添加 BirthPlace 屬性
然後,修改 AuthorRepository 的 GetAllAsync 方法
接着,修改 AuthorController 的 GetAuthorsAsync 方法中生成分頁資料的代碼,添加過濾資訊
完成之後可以請求 URL: https://localhost:5001/api/authors?birthplace=beijing&pagesize=2
這樣可以看到下一頁的 URL 中不僅包含分頁參數,也包含過濾參數
搜尋功能的實作方式與過濾一樣
首先在 AuthorResourceParameters 中添加 SearchQuery 屬性
完成之後可以請求 URL: https://localhost:5001/api/authors?searchQuery=author&birthplace=beijing&pagesize=2
這樣可以看到下一頁的 URL 中不僅包含分頁參數,也包含過濾參數和查詢參數

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協定進行許可。
歡迎轉載、使用、重新釋出,但務必保留文章署名 鄭子銘 (包含連結: http://www.cnblogs.com/MingsonZheng/ ),不得用于商業目的,基于本文修改後的作品務必以相同的許可釋出。
如有任何疑問,請與我聯系 ([email protected]) 。