MySQL连接器6.7.4和Entity Framework 5例外

我为Visual Studio 1.0.2下载了MySQL Connector / Net 6.7.4和MySQL ,然后按照这些说明进行测试:

  1. 创建与现有MySQL数据库的连接。
  2. 创建控制台应用程序。
  3. 从现有数据库连接添加ADO.NET实体数据模型
  4. 添加代码生成项EF 5.x DbContext Generator ,替换.tt文件。
  5. 编写一些从数据库中检索记录的代码。

运行应用程序,我得到了这个例外:

ConfigurationErrorsException :无法找到或加载已注册的.Net Framework数据提供程序。

然后我将MySql.DataMySql.Data.Entity库版本6.7.4.0的引用添加到我的.NET 4.5项目中。 现在,当我运行应用程序时,我得到一个不同的exception:

FileLoadException :无法加载文件或程序集“MySql.Data,Version = 6.6.5.0,culture = neutral,PublicKeyToken = c5687fc88969c44d”或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040)

请注意版本号,它不是我安装的MySQL Connector的版本。

我如何让它正常工作?

解决这个问题的诀窍是:

  1. 将对正确版本的MySql.DataMySql.Data.Entity库的引用(在我的例子中为.NET 4.5 6.7.4.0)添加到项目中。
  2. 编辑machine.config ,编辑器以管理员身份运行,并将所有出现的MySQL版本6.6.5.06.7.4.0

对于第二步,请注意有多个machine.config文件,每个框架版本(3.0,3.5,4.0)和架构(32位,64位)。 另请注意,.NET 4.5的machine.config文件位于.NET 4.0文件夹中。 您可以在以下位置找到machine.config文件:

C:\ WINDOWS \ Microsoft.NET \框架\\配置

和:

C:\ WINDOWS \ Microsoft.NET \ Framework64 \\配置

如果machine.config文件中没有对MySQL的引用,则可能没有为Visual Studio安装MySQL 。 要么这样做,要么将以下内容添加到项目的app.config文件中:

      

但请注意,当您MySQL for Visual Studio安装MySQL for Visual Studio并将上述代码段添加到app.config文件时,您将收到以下exception:

ConfigurationErrorsException :列’InvariantName’被约束为唯一。 值’MySql.Data.MySqlClient’已存在。

我不喜欢编辑machine.config。 只需将此重定向添加到web.config:

         

使用它应该可以阻止Virtlink提到的exception:

       

特别注意行。

从这里下载MYSQL 6.7.4.0。 请注意,您的特定问题需要6.7.4.0而不是其他版本!

这是直接链接。

下载文件并将其添加到解决方案的参考文件夹中。

这可能会解决你的问题(它对我有用,是的,我知道这可能是一个非常烦人的问题)。

祝好运 :)

我意识到这个post在2013年得到了答案,但我刚刚遇到了这个问题。 在我的情况下,我最近安装了Windows 10 Anniversary更新。 在此之前没有问题。

根据上面的答案,事实certificate我的Machine.config文件已被覆盖(我认为更新)。

对我来说,一旦我将MySql程序集信息恢复到Machine.config文件,它立即重新开始工作。

特别是“运行时”和“DbProviderFactories”部分已被擦除,必须更换。 它们如下(这些将根据您使用的程序集的版本而有所不同):

运行时部分:

                 

DbProviderFactories部分

    

希望这有助于其他任何人遇到同样的问题。