.NET MySQL连接器冲突DbProviderFactories

我正在使用带有entity framework4的.NET MySQL连接器,一切都运行良好,但我想在部署在服务器上时将MySQL客户端DLL文件与我的应用程序打包,因此我们不必担心在每台服务器上安装mysql,每个应用程序将只具有所需的正确副本。

为了实现这一点,我确保MySQL引用设置了“Copy Local”,这样它们就会被复制到bin文件夹并将以下内容添加到我的app.config中:

     

这工作,我能够部署应用程序而无需在远程服务器上安装mysql,但现在我的本地开发机器上有问题(我安装了MySQL连接器),当EF尝试时我收到此错误连接:

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

如果我在app.config中注释掉我上面添加的XML,那么错误就会消失。 这可能是因为系统上安装了相同的驱动程序并且位于machine.config中。

解决办法是什么? 我宁愿不必手动注释和取消注释该行,具体取决于我为哪个系统构建应用程序。

尝试在webconfig中添加 。 在您的计算机上,您已经安装了Connector for MySql,并且您的machine.config已通过在DbProviderFactories中添加项目进行了修改。 因此,如果您在web.config中添加另一个MySql数据提供程序,那么就像您尝试两次注册相同的东西一样。

       

您还可以考虑将所有mysql DLL从C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.0复制到项目的bin文件夹中。 通过这种方式,EF6可以到达所有必需的MySQL连接器(MySql.Data)子类。