¿El tipo Entity Framework Provider no se pudo cargar?

c# entity-framework entity-framework-6 mstest teamcity-7.1

Pregunta

Estoy intentando ejecutar mis pruebas en TeamCity, que actualmente está instalado en mi máquina.

System.InvalidOperationException :

El tipo de proveedor Entity Framework ' System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer , Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' para el ' System.Data.SqlClient ' El proveedor de ADO.NET no pudo ser cargado. Asegúrese de que el ensamblaje del proveedor esté disponible para la aplicación en ejecución.

Consulte http://go.microsoft.com/fwlink/?LinkId=260882 para obtener más información ...

No tengo ninguna referencia a System.Data.Entity en ninguno de mis proyectos como se sugirió en codeplex para actualizar a EF6.

Entonces, no estoy seguro de por qué estoy recibiendo esta excepción. No obtengo ninguna excepción de este tipo cuando ejecuto las pruebas de VS.

Intenté establecer CopyLocal en false y luego nuevamente en true ... pero eso tampoco parece funcionar.

Actualizar

Mi app.config tiene lo siguiente. ¿Causa esto algún comportamiento que no entiendo?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>

Obtengo el siguiente stacktrace en teamcity.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>

Respuesta aceptada

Mismo problema, pero instalé EF 6 a través de Nuget. Falta EntityFramework.SqlServer para otro ejecutable. Simplemente agregué el paquete nuget a ese proyecto.


Respuesta popular

Tuve el mismo problema en mis proyectos de prueba: instalé los últimos bits de EF6 a través de NuGet y cada vez que invoco algo relacionado con EF:

El proveedor de Entity Framework tipo 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' para el 'System.Data.SqlClient' proveedor de ADO.NET no se pudo cargar. Asegúrese de que el ensamblaje del proveedor esté disponible para la aplicación en ejecución. Consulte http://go.microsoft.com/fwlink/?LinkId=260882 para obtener más información.

Mi solución: coloqué este método dentro de mi proyecto de prueba:

public void FixEfProviderServicesProblem()
{
//The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer'
//for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. 
//Make sure the provider assembly is available to the running application. 
//See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}

Nunca se ha llamado a este método, pero creo que el compilador eliminará todos los ensamblados "innecesarios" y, sin usar EntityFramework.SqlServer, la prueba falla.

De todos modos: funciona en mi máquina;)

Nota: en lugar de agregar el método para probar el proyecto, puede asegurar una referencia estática a SqlProviderServices desde su proyecto de modelo / entidad .




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué