EntityFramework数据持久化应用

错误 CS0308: 非泛型 类型“System.Collections.IEnumerable”不能与类型参数一起使用. 查找节点。

:非泛型类型"ICollection"不能与类型参数一起使用

using System.Collections.Generic;加这个

SqlException: 'OFFSET' 附近有语法错误。

在 FETCH 语句中选项 NEXT 的用法无效。

'OFFSET' 附近有语法错误。

在 FETCH 语句中选项 NEXT 的用法无效

Entity Framework:'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

ProviderManifestToken

原因:可能因为本地开发环境的数据库版本高于服务器版本,导致 EF 生成了错误的 SQL 语句

解决:找到 EF 对应生成的 edmx 文件,选中右键-打开方式-使用文本编辑器打开编辑,找到“ProviderManifestToken”这一属性, EF 此属性值为 2012,而服务器中是 2008 版本的SQLServer数据库,所以将此属性值修改为 2008 即可。

思路

想到可能时因为本地开发环境的数据库版本高于服务器版本,导致 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 &#

     2、把下面的2012的值替换为2008即可。

             ProviderManifestToken=“2012” ==> ProviderManifestToken=“2008”

你可能感兴趣的:(EnterFramework)