EntityFramework 6 分頁模式

在個人另外一篇博客中提到了EntityFrameworkCore 分頁問題, 中提到了EntityFrameworkCore在針對不一樣版本SQL Server數據庫時如何指定分頁模式,那麼如何在EntityFramework 6中指定分頁模式呢?html

場景重現

在一個項目VS2010開發的項目中,我引用了EntityFramework 6,但數據庫使用的是SQL Server 2012.sql

使用T4模版生成的數據庫上下文,使用EntityFramework 6.Take().Skip()方法生成分頁使用的是SQL Server 2008rows_number()方式.數據庫

出現了翻頁操做時,頁數越靠後,查詢速度越慢的狀況,4W條多表關聯視圖數據,第一頁查詢只用0.5毫秒,直接最後一頁查詢用了30多秒...編輯器

解決辦法

而後就想如何在EntityFramework 6中啓用SQL Server 2012中的新分頁方式offset & fetch呢?ide

後來發現能夠經過編輯器打開.edmx文件(是xml內容),修改ProviderManifestToken="2008"ProviderManifestToken="2012",而後編譯運行,查看如今EntityFramework 6分頁語句生成的sql就能夠看到使用的是offset & fetch了,同時上面的問題已解決了,每頁查詢速度基本穩定在秒內.fetch

同理是否是能夠經過修改該屬性值來使用SQL Server 2005的分頁模式?.net

不過在VS2010中出現以下錯誤信息,不影響功能,但看着煩,暫時不知道如何消除?code

我猜是否是受VS2010T4模版影響,下次換個高版本的VS或模版看看?xml

  • 後來使用VS2017生成數據庫實體,發現ProviderManifestToken默認就爲2012
  • 從新使用VS2010生成數據庫實體,發現ProviderManifestToken默認又是2008

參考文檔htm

相關文章
相關標籤/搜索