MySQL 连接器 6.7.4 和 Entity Framework 5 异常
回答问题 我下载了MySQL Connector/Net 6.7.4和MySQL for Visual Studio 1.0.2,然后按照这些说明进行测试: 创建与现有 MySQL 数据库的连接。 创建控制台应用程序。 从现有数据库连接中添加_ADO.NET Entity Data Model_。 添加代码生成项_EF 5.x DbContext Generator_,替换.tt文件。 编写一些从
回答问题
我下载了MySQL Connector/Net 6.7.4和MySQL for Visual Studio 1.0.2,然后按照这些说明进行测试:
-
创建与现有 MySQL 数据库的连接。
-
创建控制台应用程序。
-
从现有数据库连接中添加_ADO.NET Entity Data Model_。
-
添加代码生成项_EF 5.x DbContext Generator_,替换.tt文件。
-
编写一些从数据库中检索记录的代码。
运行应用程序,我得到了这个异常:
ConfigurationErrorsException:无法找到或加载已注册的 .Net Framework 数据提供程序。
然后我在我的 .NET 4.5 项目中添加了对MySql.Data
和MySql.Data.Entity
库版本 6.7.4.0 的引用。现在,当我运行应用程序时,我得到了一个不同的异常:
FileLoadException:无法加载文件或程序集 'MySql.Data, Versionu003d6.6.5.0,cultureu003dneutral, PublicKeyTokenu003dc5687fc88969c44d' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)
注意版本号,它不是我安装的 MySQL 连接器的版本。
如何让它正常工作?
Answers
解决这个问题的诀窍是:
-
在项目中添加对正确版本的
MySql.Data
和MySql.Data.Entity
库的引用(在我的例子中,.NET 4.5 为 6.7.4.0)。 -
以管理员身份运行编辑器编辑
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”已经存在。
更多推荐
所有评论(0)