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

Ste*_*loy 8 c# asp.net entity-framework asp.net-mvc-4

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

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

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

尝试重新安装EF,我没有任何不必要的配置部分Glimpse,我尝试针对不同版本的框架,但错误仍然存​​在......

Ste*_*loy 6

事实证明,DbProviderFactories我的Framework/Framework64 machine.config文件中有一个空的重复元素,它似乎是由安装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/>
Run Code Online (Sandbox Code Playgroud)

删除额外节点:

<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>      
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.


归档时间:

查看次数:

3332 次

最近记录:

8 年,4 月 前