在使用 EF 的时候,忽然发现更新后在服务器中运行出错,异常信息主要包含如下信息:数据库
'OFFSET' 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效。\r\n关键字 'AS' 附近有语法错误。
想到可能时由于本地开发环境的数据库版本高于服务器版本,致使 EF 生成了错误的 SQL 语句,可是不知道具体应该从哪里修改。服务器
经 google 后找到解决方案:编辑器
找到 EF 对应生成的 edmx 文件,使用文本编辑器打开编辑,找到“ProviderManifestToken”这一属性,更新后的 EF 将此属性设为了 2012,而服务器中仍是 2008 版本的数据库,因此将此修改成 2008 便可。保存后从新生成发布项目,问题解决。ide
可选的配置值:google
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/58058a4b479f7b540f9f5ef9spa