Entity Framework 異常: 'OFFSET' 附近有語法錯誤。\r\n在 FETCH 語句中選項 NEXT 的用法無效。\r\n關鍵字 'AS' 附近有語法錯誤。


在使用 EF 的時候,突然發現更新后在服務器中運行出錯,異常信息主要包含以下信息:

'OFFSET' 附近有語法錯誤。\r\n在 FETCH 語句中選項 NEXT 的用法無效。\r\n關鍵字 'AS' 附近有語法錯誤。

想到可能時因為本地開發環境的數據庫版本高於服務器版本,導致 EF 生成了錯誤的 SQL 語句,但是不知道具體應該從哪里修改。

經 google 后找到解決方案:

找到 EF 對應生成的 edmx 文件,使用文本編輯器打開編輯,找到“ProviderManifestToken”這一屬性,更新后的 EF 將此屬性設為了 2012,而服務器中還是 2008 版本的數據庫,所以將此修改為 2008 即可。保存后重新生成發布項目,問題解決。

可選的配置值:

internal class SqlProviderManifest : DbXmlEnabledProviderManifest
{
    internal const string TokenSql8 = "2000";
    internal const string TokenSql9 = "2005";
    internal const string TokenSql10 = "2008";
    internal const string TokenSql11 = "2012";
    internal const string TokenAzure11 = "2012.Azure";
//...

來源:http://www.xdlysk.com/article/58058a4b479f7b540f9f5ef9


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM