Kek*_*koa 22 .net c# mysql mysql-connector
我正在使用带有Entity Framework 4的.NET MySQL连接器,一切都运行良好,但我想在部署在服务器上时使用我的应用程序打包MySQL客户端DLL文件,因此我们不必担心在每台服务器上安装mysql,每个应用程序将只具有所需的正确副本.
为了实现这一点,我确保MySQL引用设置了"Copy Local",以便将它们复制到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>
Run Code Online (Sandbox Code Playgroud)
这工作,我能够在没有远程服务器上安装的MySQL部署的应用程序,但现在我有我的本地开发机器上(我一个问题做安装MySQL的连接器),和我得到这个错误时,EF尝试连接:
列'InvariantName'被约束为唯一.值'MySql.Data.MySqlClient'已存在.
如果我在app.config中注释掉我上面添加的XML,那么错误就会消失.这可能是因为系统上安装了相同的驱动程序并且位于machine.config中.
解决办法是什么?我宁愿不必手动注释和取消注释该行,具体取决于我为哪个系统构建应用程序.
Ale*_*bin 46
尝试在webconfig中添加<remove invariant ="MySql.Data.MySqlClient"/>.在您的计算机上,您已安装Connector for MySql,并且已通过在DbProviderFactories中添加项目来修改machine.config.因此,如果您在web.config中添加另一个MySql数据提供程序,它就像您尝试两次注册相同的东西一样.
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17115 次 |
最近记录: |