C# 无法确定类型为>;的提供程序工厂的提供程序名称';System.Data.SqlClient.SqlClientFactory';

C# 无法确定类型为>;的提供程序工厂的提供程序名称';System.Data.SqlClient.SqlClientFactory';,c#,asp.net,entity-framework,asp.net-mvc-4,C#,Asp.net,Entity Framework,Asp.net Mvc 4,尝试使用Entity Framework 6在项目中运行集成测试导致错误: 安装程序:System.NotSupportedException:无法确定类型为的提供程序工厂的提供程序名称 'System.Data.SqlClient.SqlClientFactory'。请确保ADO.NET 已在应用程序配置中安装或注册提供程序 但是在同一个项目上的测试在我同事的几台机器上运行得非常好,我没有任何本地更改 已尝试重新安装EF,或,但错误仍然存在…事实证明,我的Framework/Framework

尝试使用Entity Framework 6在项目中运行集成测试导致错误:

安装程序:System.NotSupportedException:无法确定类型为的提供程序工厂的提供程序名称 'System.Data.SqlClient.SqlClientFactory'。请确保ADO.NET 已在应用程序配置中安装或注册提供程序

但是在同一个项目上的测试在我同事的几台机器上运行得非常好,我没有任何本地更改


已尝试重新安装EF,或,但错误仍然存在…

事实证明,我的Framework/Framework64machine.config文件中都有一个空的、重复的
DbProviderFactorys
元素,它似乎是通过安装IBM DB2.NET提供程序(?!)创建的。重复节点正在使machine.config无效,因此问题被定位到我的机器上

修改

<DbProviderFactories>
    <add name="IBM DB2 for i5/OS .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for i5/OS" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
    <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/><add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
<DbProviderFactories/>

要删除额外节点,请执行以下操作:

<DbProviderFactories>
    <add name="IBM DB2 for i5/OS .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for i5/OS" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
    <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/><add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>      


解决了问题。

这就是我的情况!我甚至不知道机器上安装了DB2,在这里发现可能是格式错误的machine.config,我还发现了DB2条目。非常感谢。我使用的是dotnet4.5.2,这与此无关。