【问题标题】:MySQL Entity Framework Error - The specified store provider cannot be found in the configuration, or is not validMySQL 实体框架错误 - 在配置中找不到指定的存储提供程序,或者无效
【发布时间】:2012-01-02 20:39:20
【问题描述】:

我用 C# 编写了一个程序集来执行 MySQL 数据库的所有数据访问。我已经在我的 C# winform 桌面应用程序中成功使用了程序集(一个已编译的 dll)。但它只适用于安装了“MySQL Connector Net 6.4.4”的电脑。

我尝试在我的 asp.net 网站项目中使用相同的程序集。首先,我收到有关缺少连接字符串的错误。这很容易通过将 MySQL 连接字符串添加到 web.config 文件来解决。我现在收到此错误(下面列出的堆栈跟踪),我尝试将以下 dll 添加到我的 bin 文件夹以解决它,但它没有工作。

MySql.Data.dll
MySql.Data.Entity.dll
MySql.Web.dll

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. 
---> System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. 
---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 
--- End of inner exception stack trace 

【问题讨论】:

  • 连接字符串中是否有 providerName="System.Data.EntityClient" 属性?
  • 是的,我只是检查确定。

标签: c# mysql entity-framework


【解决方案1】:

但它只适用于安装了“MySQL Connector Net 6.4.4”的电脑。

这是否意味着您正在尝试在未安装提供程序的机器上运行您的代码?在这种情况下,您还必须在配置文件中注册提供程序,因为安装会将其添加到 machine.config 中,如果您没有安装它,则提供程序当前未注册。

尝试将此添加到您的 web.config 文件中:

<system.data>
  <DbProviderFactories>
    <add name="MySQL Data Provider" 
         invariant="MySql.Data.MySqlClient" 
         description=".Net Framework Data Provider for MySQL"  
         type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>

【讨论】:

  • 谢谢,我今晚试试。为了将来参考,在这类场景中准确确定需要添加到配置文件中的最简单方法是什么?
  • 我不得不删除“Version=6.4.4.0, Culture=neutral...”,即使我的 MySql.Data.dll 完全符合这些特征(根据 IL Spy)
【解决方案2】:

我发现我在使用独立的 .NET 连接器 6.6.5 安装程序时也遇到了这个问题。

要解决此问题,只需卸载独立的 .NET 连接器安装程序,然后安装 mysql-community-installer,此安装程序允许您向 MySQL 添加/删除功能,其中一个功能是具有实体的 .NET 连接器框架支持。

使用此连接器后,所有 MySQL EF 问题都会消失。

【讨论】:

  • MySQL 社区安装程序存在问题,因为 Visual Studio 位的下载一直失败。通过下载完整的 180mb 安装程序而不是 1.5mb 的安装程序解决了这个问题。上面然后解决了这个问题。
  • @Greg.... 这完全有效!!!!!!!我在这个问题上待了将近 2 个小时,解决方案是卸载独立连接器(在我的情况下,它是由 Oracle 提供的..)
【解决方案3】:

在网络配置中添加这个

 <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" />
    </DbProviderFactories>
  </system.data>

【讨论】:

    【解决方案4】:

    对于像我一样通过谷歌解决这个老问题的人:

    如果您升级到 MySQL for Visual Studio 1.1.3,您也会收到此错误,这是与 Visual Studio 2013 的第一个兼容版本,但仍使用 MySQL Connector 6.6.6,据我所知是最后一个与 Entity Framework 4.3.1 兼容的版本。

    我们知道我们必须尽快更新到 EF5(或 6),但现在这迫使我们在非常不方便的时候进行更改...

    【讨论】:

      【解决方案5】:

      卸载所有 .net 框架并重新安装它们后,我遇到了这个错误(我使用的是 .net 连接器 6.4.3)。修复方法是卸载 6.4.3 并安装 6.6.5

      【讨论】:

        【解决方案6】:

        解决方案是添加到您的 web.config 中

          <system.data>
         
            <DbProviderFactories>
              <remove invariant="MySql.Data.MySqlClient" />
              <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL"
                   type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.25.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
            </DbProviderFactories>
          </system.data>
        

        【讨论】:

          猜你喜欢
          • 2011-11-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多