gpt4 book ai didi

c# - .NET MySQL 连接器冲突的 DbProviderFactories

转载 作者:IT老高 更新时间:2023-10-28 23:48:27 29 4
gpt4 key购买 nike

我将 .NET MySQL Connector 与 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 尝试连接时出现此错误:

Column 'InvariantName' is constrained to be unique. Value 'MySql.Data.MySqlClient' is already present.

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

解决方案是什么?我宁愿不必根据我为哪个系统构建应用程序手动注释和取消注释该行。

最佳答案

尝试在您的网络配置中添加 。在您的计算机上,您已经安装了 MySql 连接器,并且您的 machine.config 已通过在 DbProviderFactories 中添加一个项目进行了修改。因此,如果您将另一个 MySql 数据提供程序放入您的 web.config 中,就像您尝试注册相同的东西两次一样。

<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>

关于c# - .NET MySQL 连接器冲突的 DbProviderFactories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354116/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com