2012-01-02 69 views
10

我已经用C#编写了一个程序集来执行MySQL数据库的所有数据访问。我已经成功地在我的C#winform桌面应用程序中使用了汇编(一个已编译的dll)。但它只适用于安装了“MySQL Connector Net 6.4.4”的电脑。MySQL实体框架错误 - 在配置中找不到指定的存储提供者,或者无效

我试图用我的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 
+0

是否在连接字符串具有的providerName =“System.Data .EntityClient“属性呢? – GemCer 2012-01-02 21:05:29

+0

是的,我只是检查确定。 – Hoody 2012-01-02 22:27:57

回答

32

但它仅适用于那些有“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> 
+1

谢谢,我今晚会尝试这个。为了将来的参考,在这些场景中确定需要添加到配置文件的最简单方法是什么? – Hoody 2012-01-03 09:27:50

+0

这工作,再次感谢。 – Hoody 2012-01-03 19:47:32

+3

尽管我的MySql.Data.dll完全符合这些特征(根据IL Spy) – Pakman 2013-01-04 07:01:53

6

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

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

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

+2

yup,但我必须删除“Version = 6.4.4.0,Culture = neutral ...”!这固定它! – 2013-06-20 21:15:52

+0

在MySQL社区安装程序中存在问题,因为视觉工作室位的下载保持失败。通过下载完整的180MB安装程序而不是1.5MB安装程序来解决此问题。上面然后解决了这个问题。 – Knightsy 2013-08-30 09:04:37

+0

@Greg ....这完全工作!!!!!!。我遇到了这个问题将近2个小时,解决方案是卸载独立连接器(在我的情况下,它是由Oracle提供的) – atp9 2016-02-17 23:43:41

0

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

3

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

添加这对于人们通过谷歌像我这样做,达到这个老问题:

您也将获得这个错误如果你升级到Visual Studio 1.1.3的MySQL,这是与Visual Studio 2013的第一个兼容版本,但仍然使用MySQL连接器6.6.6,据我所知是最后一个与Entity Framework兼容的版本4.3.1。

我们知道我们必须更新至EF5(或6)尽快,但现在这迫使在一个非常不方便的时间在我们身上的改变......

相关问题