【问题标题】:Upgrade to EF6 on .net4 - System.Data.MetadataException: Schema specified is not valid在 .net4 上升级到 EF6 - System.Data.MetadataException:指定的架构无效
【发布时间】:2014-01-16 03:12:39
【问题描述】:

我有一个在 .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.

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

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

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

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

    或者:
    1. 以 XML 编辑器打开您的 EDMX 文件
    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
    

    【讨论】:

    • 这发生在我身上,但我最终不得不将我的 EDMX 升级到 v3,因此反向执行这些步骤有助于我做到这一点。谢谢!
    • 一直以来,我都假设“修改”链接只会打开 XML 进行修改。我不知道它实际上会尝试修复 xml 命名空间。我想我已经手动完成了十几次了...>_
    【解决方案2】:

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

    EDMX .NET 4.5 to 4.0?

    【讨论】:

      【解决方案3】:

      在我的情况下,我重建了解决方案并编译了 edmx,更改了一堆 DLL 和 PDB,我能够很好地打开 EDMX。希望对您有所帮助。

      维什瓦

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-07
        • 2017-12-29
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        相关资源
        最近更新 更多