c# – .NET MySQL连接器冲突DbProviderFactories

我使用的.NET MySQL连接器与实体框架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中。

解决办法是什么?我宁可不必手动评论和取消注释行,具体取决于我构建应用程序的系统。

尝试添加< remove invariant =“MySql.Data.MySqlClient”/>在你的webconfig。在您的计算机上,您已经安装了Connector for MySql,并且通过在DbProviderFactories中添加一个项目来修改machine.config。所以如果你把另一个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>
http://stackoverflow.com/questions/7354116/net-mysql-connector-conflicting-dbproviderfactories

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – .NET MySQL连接器冲突DbProviderFactories