回答问题

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

  1. 创建与现有 MySQL 数据库的连接。

  2. 创建控制台应用程序。

  3. 从现有数据库连接中添加_ADO.NET Entity Data Model_。

  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, Versionu003d6.6.5.0,cultureu003dneutral, PublicKeyTokenu003dc5687fc88969c44d' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)

注意版本号,它不是我安装的 MySQL 连接器的版本。

如何让它正常工作?

Answers

解决这个问题的诀窍是:

  1. 在项目中添加对正确版本的MySql.DataMySql.Data.Entity库的引用(在我的例子中,.NET 4.5 为 6.7.4.0)。

  2. 以管理员身份运行编辑器编辑machine.config,并将所有出现的 MySQL 版本6.6.5.0替换为6.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\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”已经存在。

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐