【发布时间】:2011-11-13 07:46:39
【问题描述】:
我将 .NET MySQL 连接器与 Entity Framework 4 一起使用,一切正常,但我想在部署到服务器时将 MySQL 客户端 DLL 文件与我的应用程序打包在一起,这样我们就不必担心在服务器上安装 mysql每个服务器,每个应用程序都将拥有它需要的正确副本。
为了实现这一点,我确保 MySQL 引用设置了“复制本地”,以便将它们复制到 bin 文件夹并将以下内容添加到我的 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.3.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
这行得通,我无需在远程服务器上安装 mysql 就可以部署应用程序,但现在我在本地开发机器上遇到问题(我 确实 安装了 MySQL 连接器),当 EF 尝试连接时出现此错误:
列“InvariantName”被限制为唯一。价值 'MySql.Data.MySqlClient' 已经存在。
如果我在 app.config 中注释掉上面添加的 XML,错误就会消失。这可能是因为系统上安装了相同的驱动程序并且在 machine.config 中。
解决办法是什么?我宁愿不必手动注释和取消注释,具体取决于我为哪个系统构建应用程序。
【问题讨论】:
标签: c# .net mysql mysql-connector