在個人另外一篇博客中提到了EntityFrameworkCore 分頁問題, 中提到了EntityFrameworkCore
在針對不一樣版本SQL Server數據庫時如何指定分頁模式,那麼如何在EntityFramework 6
中指定分頁模式呢?html
在一個項目VS2010
開發的項目中,我引用了EntityFramework 6
,但數據庫使用的是SQL Server 2012
.sql
使用T4
模版生成的數據庫上下文,使用EntityFramework 6
的.Take().Skip()
方法生成分頁使用的是SQL Server 2008
的rows_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
我猜是否是受VS2010
或T4
模版影響,下次換個高版本的VS或模版看看?xml
VS2017
生成數據庫實體,發現ProviderManifestToken
默認就爲2012
VS2010
生成數據庫實體,發現ProviderManifestToken
默認又是2008
參考文檔htm