在.net4上升级到EF6 - System.Data.MetadataException:指定的模式无效

时间:2014-01-16 03:12:40

标签: entity-framework

我有一个在.net v4下运行的asp.net网站。 我已经从Entity Framework v5升级到v6.02,并且使用nuget提供的EntityFramework v4 dll在IIS express和.net4上本地运行良好。

我发布到我的托管公司并收到以下错误。升级到.net4.5可能会有所帮助,但目前我的提供商不支持此选项。

有什么建议吗?

System.Data.MetadataException: Schema specified is not valid. Errors: BkkpsModel.csdl(2,9) : warning 0005: Could not find schema information for the attribute 'Namespace'. BkkpsModel.csdl(2,32) : warning 0005: Could not find schema information for the attribute 'Alias'. BkkpsModel.csdl(2,98) : error 0005: The 'http://schemas.microsoft.com/ado/2009/02/edm/annotation:UseStrongSpatialTypes' attribute is not declared. BkkpsModel.csdl(2,2) : error 0010: The element Schema in namespace http://schemas.microsoft.com/ado/2009/11/edm was unexpected for the root element. The expected Schema in one of the following namespaces: http://schemas.microsoft.com/ado/2006/04/edm, http://schemas.microsoft.com/ado/2007/05/edm, http://schemas.microsoft.com/ado/2008/09/edm.

3 个答案:

答案 0 :(得分:13)

您使用Entity Framework 6创建了一个EDMX文件,但您将其与Entity Framework 5一起使用。 实体框架6使用版本3.0的EDMX文件,但实体框架5不支持它。

您必须修复从3.0版到2.0版的EDMX文件

最简单的方法是使用Entity Framework 5或更早版本在Visual Studio 2012项目中打开EDMX。实体数据模型设计器显示错误:无法显示文件。该文件引用与项目的目标框架不一致的XML命名空间。然后单击修改链接,设计人员自动修复您的EDMX文件。

OR:
1.将您的EDMX文件作为XML编辑器打开 2.更改以下元素:

from:
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
to:
<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">

from:
xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl"
to:
xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl"

from:
xmlns="http://schemas.microsoft.com/ado/2009/11/edm"
to:
xmlns="http://schemas.microsoft.com/ado/2008/09/edm"

from:
<Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2009/11/mapping/cs">
to:
<Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2008/09/mapping/cs">

... for all inconsistent xmlns

答案 1 :(得分:1)

实现Cyrus所说的另一种方式(从edmx v3降级到ednx v2)是另一个问题的答案:

EDMX .NET 4.5 to 4.0?

答案 2 :(得分:0)

就我而言,我重建了解决方案,并编译了edmx,更改了一堆DLL和PDB,并且能够很好地打开EDMX。希望有帮助。

毗湿婆