一尘不染

MySQL连接器6.7.4和Entity Framework 5异常

mysql

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

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

运行该应用程序,我遇到了以下异常:

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

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

FileLoadException :无法加载文件或程序集’MySql.Data,版本=
6.6.5.0,区域性=中性,PublicKeyToken =
c5687fc88969c44d’或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)

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

我如何使其正常工作?


阅读 345

收藏
2020-05-17

共1个答案

一尘不染

解决这个问题的技巧是:

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

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

C:\ Windows \ Microsoft.NET \ Framework \\ Config

和:

C:\ Windows \ Microsoft.NET \ Framework64 \\ Config

如果machine.config文件中没有对MySQL的引用,则可能未安装MySQL for Visual
Studio
。要么这样做,要么将以下内容添加到app.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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>

但是请注意,当您同时安装上述代码段MySQL for Visual Studio 并将其 添加到app.config文件中时,将出现此异常:

ConfigurationErrorsException
:列’InvariantName’被限制为唯一。值’MySql.Data.MySqlClient’已经存在。

2020-05-17