MySQL实体框架错误-在配置中找不到指定的存储提供程序,或者该提供程序无效

本文关键字:程序 存储 无效 或者 错误 框架 实体 找不到 配置 MySQL | 更新日期: 2023-09-27 18:19:27

我用C#编写了一个程序集,用于执行MySQL数据库的所有数据访问。我已经成功地在我的C#winform桌面应用程序中使用了程序集(一个已编译的dll)。但它只适用于安装了"MySQL连接器网络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 

MySQL实体框架错误-在配置中找不到指定的存储提供程序,或者该提供程序无效

但它只适用于安装了"MySQL连接器网络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>

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

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

一旦你使用这个连接器,你所有的MySQL EF问题都会消失。

将其添加到web配置中

 <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>

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

如果您升级到MySQL for Visual Studio 1.1.3,这是第一个与Visual Studio 2013兼容的版本,但仍然使用MySQL连接器6.6.6,据我所知,这是最后一个与实体框架4.3.1兼容的版本。

我们知道我们必须尽快更新到EF5(或6),但现在这迫使我们在一个非常不方便的时刻做出改变。。。

在卸载所有.net框架并重新安装后,我出现了这个错误(我使用的是.net连接器6.4.3)。修复程序是卸载6.4.3并安装6.6.5

解决方案是将添加到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>