2015-09-08 38 views
7

Tentando di eseguire test di integrazione in un progetto che utilizza Entity Framework 6 ha provocato l'errore:Impossibile determinare il nome del provider per il provider di fabbrica di tipo> 'System.Data.SqlClient.SqlClientFactory'

SetUp : System.NotSupportedException : Unable to determine the provider name for provider factory of type 'System.Data.SqlClient.SqlClientFactory'. Make sure that the ADO.NET provider is installed or registered in the application config.

Ma la i test sullo stesso progetto funzionano perfettamente su molte macchine dei miei colleghi e non ho modifiche locali.

hanno tentato di reinstallare EF, I don't have any unnecessary config sections o Glimpse e I've tried targeting a different version of the framework ma l'errore persiste ...

risposta

6

Si scopre che ho un vuoto, duplicare DbProviderFactories elemento sia nel mio quadro/Framework64 machine.config file, che sembra essere stato creato dall'installazione del provider IBM DB2 .NET (?!). Il nodo duplicato sta rendendo non valido machine.config, quindi il problema è localizzato sulla mia macchina.

Modifica

<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/> 

per rimuovere il nodo in più:

<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>  

ha risolto il problema.

Problemi correlati