我有一个在.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.
答案 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)是另一个问题的答案:
答案 2 :(得分:0)
就我而言,我重建了解决方案,并编译了edmx,更改了一堆DLL和PDB,并且能够很好地打开EDMX。希望有帮助。
毗湿婆