覺得奇怪,到底花生省魔術?
原本以為是PageList套件的問題,後來單純地用Skip與Take函數也是不行!因為錯誤訊息沒列出產生的SQL,所以用SQL Profiler查了一下跑出來的語法如下:
重點就是在紅框的語法,OFFSET指令是從2012版之後才加入的,本機開發使用的localDB,是2014版本,所以在本機測試執行沒問題。但遠端主機的SQL Server是2008 R2,不支援OFFSET語法(可看到OFFSET是黑色,並非藍色關鍵字),難怪會報錯囉!
所以只要把EF的SQL Server版本調成2008就可以了!我們如果用DB First或是Model First,應該都會產生EDMX檔案,但直接點兩下會是以圖形方式顯示,所以我們在edmx檔按右鍵,選擇「開啟方式...」
然後選擇「XML(文字)編輯器」,即可以文字方式開啟這個檔案。
在檔案中找到「ProviderManifestToken」這個屬性,可看到預設值是2012,我們把它改成2008,然後存檔,這樣執行就沒問題囉!
沒有留言:
張貼留言