自己的应用程序的App.config或Web.Config文件中与
系统的C:WindowsMicrosoft.NETFramework64v4.0.30319Configmachine.config文件
1.重复如下配置:
<DbProviderFactories> <add name="MySQL Data Provider2" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories>
会抛出异常如下:
Exception is: ConfigurationErrorsException - 创建 system.data 的配置节处理程序时出错: 列“InvariantName”被约束为是唯一的。值“MySql.Data.MySqlClient”已存在
2.如果两者都不配置,会抛出如下异常:
Exception is: ArgumentException - Can't load DbProviderFactory for given value of providerType
实际当中,会碰到如下问题:
有些数据库安装出问题的话,系统的Configmachine.config文件中不会配置
<add name="MySQL Data Provider2" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
由于以上的不确定性,我们在自己应用程序的app/web.config文件中配置这个节点就可能会因重复配置造成异常。
解决方法:
在自己应用程序的app/web.config文件中添加这个节点:
<remove invariant="MySql.Data.MySqlClient"/>节点
即:
<system.data> <DbProviderFactories> <remove invariant="MySql.Data.MySqlClient"/> <add name="MySQL Data Provider2" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.My SqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data>