在使用 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";
//...