天天看點

EF 利用PagedList進行分頁并結合查詢 方法2

微軟提供了PagedList分頁,相信大家在網上也能搜尋一大堆關于pagedList用法的部落格,論壇。但是,在使用的過程中一不小心,就會掉入pagedList某種正常用法的陷阱。

代碼如下:

EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2

View Code

前端HTML

EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2

上述的用法很簡單,直接查詢所有資料,然後利用pagedList提供的HTML helper 進行分頁。

其效果圖也不錯,如下:

EF 利用PagedList進行分頁并結合查詢 方法2

上述中紅色字型提到:該用法需要一次性查詢表中所有資料,試問:如果您的資料表中有百萬甚至千萬條資料,那麼這種用法效率是不是将會很低?

說來也慚愧,當初用的時候,我也想到了這個弊端,但是一直沒去想辦法解決這個問題。

還好,pagedList還提供了另外一種方法:StaticPagedList 方法

StaticPagedList 方法需要提供四個參數,分别為:資料源  目前頁碼  每頁條數  以及總記錄數

如上述所言,我們在查詢的過程中不能一次性查詢所有資料,因為這樣做效率很低。而現在我們要做的就是查詢目前頁碼的 10 條資料(假設每頁展示十條資料)及傳回資料表中的總記錄數。

那麼我們該怎麼做呢?

方法其實很多,在我的項目中,我用到一個存儲過程<不管你用什麼,你現在要做的就是傳回:目前頁碼的 10 條資料,及資料表總記錄條數>

有了存儲過程,我們就要用EF執行這個存儲過程,怎麼執行呢?

接口層:

執行層:繼承接口

EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2

實體Model層:

EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2

控制器代碼:

EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2

UI/View層

EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2

上述代碼已經很齊全了,大家可以自行嘗試,需要說明兩點:

EF 利用PagedList進行分頁并結合查詢 方法2

view層HTML代碼:

EF 利用PagedList進行分頁并結合查詢 方法2

至此,整個pagedList分頁就完畢了。

這樣查詢提升了效率。

我的分頁效果圖如下:

EF 利用PagedList進行分頁并結合查詢 方法2

由圖可知,我的資料表共有:151303條記錄,如果采用每次都加載所有資料,效率是何其低可想而知。

呵呵,截止到這兒,pagedlist分頁也就講完了!

現在,我們提出新的要求:結合查詢,根據學生姓名和學号進行模糊查詢

其後端變更如下:

EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2

前端如下:

EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2
EF 利用PagedList進行分頁并結合查詢 方法2

上圖為變更處、

運作效果:

EF 利用PagedList進行分頁并結合查詢 方法2

@陳卧龍的部落格

繼續閱讀