【问题标题】:.NET MySQL Connector Conflicting DbProviderFactories.NET MySQL 连接器冲突的 DbProviderFactories
【发布时间】: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


    【解决方案1】:

    尝试在您的 webconfig 中添加 。在您的计算机上,您已经安装了 MySql 连接器,并且您的 machine.config 已通过在 DbProviderFactories 中添加一个项目进行了修改。因此,如果您在 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>
    

    【讨论】:

    • 在服务器和本地机器上都能完美运行。谢谢!
    • 我也遇到了这个问题,这就像一个魅力。我认为它会是这样的,但没想到尝试使用 invariant 关键字。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2014-08-17
      相关资源
      最近更新 更多