【问题标题】:Entity Framework: Unrecognized element 'providers' exception实体框架:无法识别的元素“提供者”异常
【发布时间】:2014-09-16 00:58:57
【问题描述】:

当我将 Entity Framework 5.0.0 与 .NET 4.0 一起使用时,我在运行时遇到 Unrecognized element 'providers' 异常。实际上,对于 .NET 4.0,当我使用 NuGet 执行安装包时,它是 Entity Framework 的 4.4.0 版本。当我从资源管理器中检查文件的属性时,我可以看到:

这是我的配置文件

 <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <connectionStrings>
    <add name="xxx" connectionString="metadata=res://*/StreetMusicModel.csdl|res://*/StreetMusicModel.ssdl|res://*/StreetMusicModel.msl;         provider=MySql.Data.MySqlClient;provider connection string='         server=xxx.net;         user id=xxx;         password=xxx;         database=xxx'" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v12.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" />
    </providers>
  </entityFramework>

我感觉 Entity Framework 4.4.0 无法识别标签。我可以删除或重命名该部分吗?当我删除该部分时,我得到另一个异常:底层提供程序在打开时失败

【问题讨论】:

  • 尝试删除, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

标签: c# .net entity-framework entity-framework-4


【解决方案1】:

在使用 Nuget 将 EF 从版本 6 降级到版本 5.0.0 后,我遇到了这个问题。我认为问题是在添加 EF v6 时添加了提供程序配置,但在降级后没有删除。因此,您可以简单地删除 &lt;providers&gt; 标签中的内容和标签本身,它会正常工作:

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="v12.0" />
    </parameters>
  </defaultConnectionFactory>
</entityFramework>

【讨论】:

  • 为我删除作品。如果您删除配置文件 VS2012 会再次使用有问题的 标签重新创建它,我必须再次手动删除它们。为什么会这样?
  • 回答我自己的评论 - 我从 bin 目录中的 .exe.config 中删除,而不是从 App.config 文件中删除。从 App.config 文件中删除,一切都很好。
  • @timothy 这是程序员会犯的三重手掌错误之一。而我今天才这样做..不知道我的头在哪里。
  • 这是我同样的情况。我使用 Nuget 从 EF 6 降级到 5。感谢您的回答!
  • 感谢您的回答。从 5 更新到 6 损坏的 odata 服务,降级回 5 会产生此问题。
【解决方案2】:

您需要从项目的 app.config 文件中删除该标签,而不是从 YourProjectName.dll.config 文件中删除,因为它会在您构建项目后自动将其从 YourProjectName.dll.config 中删除。

注意:答案可以在上面的评论中找到。我刚刚在这里合并了答案。

【讨论】:

    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多