MySQL连接器6.7.4和Entity Framework 5例外
我为Visual Studio 1.0.2下载了MySQL Connector / Net 6.7.4和MySQL ,然后按照这些说明进行测试:
- 创建与现有MySQL数据库的连接。
- 创建控制台应用程序。
- 从现有数据库连接添加ADO.NET实体数据模型 。
- 添加代码生成项EF 5.x DbContext Generator ,替换.tt文件。
- 编写一些从数据库中检索记录的代码。
运行应用程序,我得到了这个例外:
ConfigurationErrorsException :无法找到或加载已注册的.Net Framework数据提供程序。
然后我将MySql.Data
和MySql.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的版本。
我如何让它正常工作?
解决这个问题的诀窍是:
- 将对正确版本的
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 \框架\\配置
和:
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部分
希望这有助于其他任何人遇到同样的问题。