¿No se pudo cargar el tipo de proveedor de Framework de entidad?


420

Estoy tratando de 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'proveedor 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.

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

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

Intenté configurar CopyLocal en falso y luego nuevamente en verdadero ... pero eso tampoco parece funcionar.

Actualizar

Mi app.config tiene lo siguiente. ¿Esto causa 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.

[MSTest] IntegrationTests.CrudTest+QuestionTest.Create
[03:59:11][IntegrationTests.CrudTest+QuestionTest.Create] Initialization method IntegrationTests.CrudTest+QuestionTest.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 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..
[03:59:11]
[IntegrationTests.CrudTest+QuestionTest.Create]     at System.Data.Entity.Config.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName)
   at System.Data.Entity.Config.ProviderServicesFactory.GetInstanceByConvention(String providerInvariantName)
   at System.Data.Entity.Config.DefaultProviderServicesResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.CachingDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 k)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at System.Data.Entity.Config.CachingDependencyResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
   at System.Data.Entity.Config.RootDependencyResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
   at System.Data.Entity.Config.CompositeResolver`2.GetService(Type type, Object key)
   at System.Data.Entity.Config.IDbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key)
   at System.Data.Entity.Config.InternalConfiguration.GetService[TService](Object key)
   at System.Data.Entity.Config.DbConfiguration.GetService[TService](Object key)
   at System.Data.Entity.Utilities.DbProviderFactoryExtensions.GetProviderServices(DbProviderFactory factory)
   at System.Data.Entity.Infrastructure.DefaultManifestTokenService.GetProviderManifestToken(DbConnection connection)
   at System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
   at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
   at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
   at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
   at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
   at System.Data.Entity.DbSet`1.Add(TEntity entity)
   at EFRepository.Infrastructure.EFRepository`1.Add(T item) in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\Repository\Infrastructure\EFRepository.cs:line 22
   at IntegrationTests.CrudTest.Initialize() in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\IntegrationTests\CrudTest.cs:line 34

1
¿EntityFramework.SqlServer.dll se implementa junto con EntityFramework.dll? En EF6, los proveedores de SqlServer y SqlServerCE no están en el mismo ensamblaje que el motor de EF como en las versiones anteriores. No debe agregar una referencia a System.Data.Entity.dll. El modelo de proveedor en EF6 cambió en comparación con EF5 y el proveedor de EF5 simplemente no funcionará. Además, puede enfrentar algunos problemas difíciles (como los tipos geoespaciales EF5 tratados como tipos de entidad en EF6)
Pawel

Sí, he verificado dos veces que no hay ninguna referencia a System.Data.Entity y las referencias a EntityFramework.dll y EntityFramework.SqlServer.dll están presentes. Nuevamente, las compilaciones y pruebas de projetc se ejecutan en VS. Es solo cuando las pruebas se ejecutan en TeamCity que surge el error.
ashutosh raina

Esta es una configuración correcta. No he usado TeamCity pero me parece que cuando su aplicación se implementa para ejecutar las pruebas con TeamCity, falta el EntityFramework.SqlServer.dll y, por lo tanto, la excepción.
Pawel

1
vea la respuesta de esta publicación: stackoverflow.com/questions/21175713/… ¡ Agregué la private volatile Type _dependency...respuesta y funcionó! Simplemente apesta que tengo que agregar una clase separada como esta solo para que EF funcione en TeamCity.
a11smiles

2
He desinstalado ADO.NET Entity Framework de paquetes NuGet e instalado de nuevo y se lo arreglaron
abhyudayasrinet

Respuestas:


426

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


108
Me di cuenta de esto también. Si crea una biblioteca que usa EF, VS colocará el EF.dll y el EF.SqlServer.dll en esa carpeta de compilación. Pero si ahora tiene otro programa que utilice su biblioteca, solo el EF.dll se colocará en esta carpeta de compilación. Falta el archivo EF.SqlServer.dll. Si lo agrega manualmente a la carpeta de compilación, el programa funciona. No es una buena solución en sí misma, pero muestra que el problema es que la falta del EF.SQLServer.dll es la causa del error.
Eric

44
Agregué var x = typeof (System.Data.Entity.SqlServer.SqlProviderServices); Entonces mi aplicación funcionó
Brian

33
Siempre me preocupo cuando escribo código que no hace absolutamente nada y de repente mi proyecto se ejecuta. O_o
Jordania

10
Además, debido a la optimización del compilador, es posible que también desee hacer x.ToString()o eliminará el typeofs en la versión.
Jordania

15
Me resulta molesto que EF 6.1 ahora necesite EF instalado en mi DLL / Proyecto ASPX, mientras que EF 5.0 solo lo necesitaba en mi DLL / Proyecto de capa de datos.
PeterX

274

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

El proveedor de Entity Framework tipo 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' para el proveedor ADO.NET 'System.Data.SqlClient' 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: puse 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;
}

Este método nunca se ha llamado, pero creo que el compilador eliminará todos los ensamblados "innecesarios" y sin usar el material 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 garantizar una referencia estática a SqlProviderServices desde su proyecto Modelo / entidad .


24
Terminé haciendo lo mismo. Me gustaría hablar con esa persona que hizo que esta asamblea dependiera de abrir una conexión a db. En su universo alternativo, todos nuestros proyectos frontend que tienen un archivo de configuración con una cadena de conexión deben hacer referencia a EntityFramework solo para obtener este dll para abrir la conexión. ¿De qué manera tiene sentido? No entiendo.
juhan_h

3
Es un truco, pero es la solución mejor / más fácil que he encontrado para el escenario en el que no tiene un paquete de implementación creado para su proyecto.
Kon

3
Para todos ustedes utilizando otras sugerencias como "var x = typeof (SqlProviderServices);". ¡Solo esta solución provista por Robert funciona en máquinas de desarrollo y construcción!
Alexander Schmidt

3
Gracias Robert, es ridículo por el equipo de EF, pero de todos modos eso está funcionando para mí.
Hitesh

77
Para ser claros: Agregar el código anterior a su DbContextclase resolverá el problema en EF 6.1. De esta manera, no necesita incluir el paquete Entity Framework Nuget en su proyecto front-end (WebApi, etc.) y puede dejar todo lo relacionado con EF en su capa de datos.
Nick

106

Nuget configurará su proyecto EF6 para hacer referencia a EntityFramework.SqlServer.dll. Esto se implementa en la carpeta de salida para su proyecto EF6 durante la compilación, pero no se implementará en la carpeta de salida para proyectos que hagan referencia a su proyecto EF6. Creo que esto se debe a que Visual Studio es lo suficientemente "inteligente" como para detectar que nada en su ensamblado está usando el dll directamente, por lo que no lo incluye. Puede forzar la implementación de EntityFramework.SqlServer.dll en la carpeta de salida de proyectos que hacen referencia a su proyecto EF6 (pruebas unitarias, UI, etc.) agregando código a su proyecto EF6 que utiliza EntityFramework.SqlServer.dll. Tenga cuidado de no poner el código en una clase generada, ya que corre el riesgo de perderlo en la próxima regeneración. Elegí agregar la siguiente clase al ensamblado, lo que solucionó el problema.

using System.Data.Entity.SqlServer;

internal static class MissingDllHack
{
    // Must reference a type in EntityFramework.SqlServer.dll so that this dll will be
    // included in the output folder of referencing projects without requiring a direct 
    // dependency on Entity Framework. See http://stackoverflow.com/a/22315164/1141360.
    private static SqlProviderServices instance = SqlProviderServices.Instance;
}

1
Esto resolvió el problema para mí con respecto a MSTest. Me gusta este método porque no requiere que haga nada complicado con la herencia de clases en mis clases de prueba. Simplemente incluya la clase en algún lugar del conjunto de prueba y MAGIC. ¡Gracias!
kbrimington

Exactamente, esta es la razón por la que no está copiando el sqlserver.dll a la salida de proyectos de referencia. Esto sucede cuando tiene una capa más entre la ejecución de la aplicación y el ensamblaje de contexto. Gracias, esto resolvió mi problema.
Bharat

2
Para aquellos que no quieren pasar 4 segundos buscándolo: usando System.Data.Entity.SqlServer;
TTT

Utilizamos una clase base común para pruebas unitarias, todas las pruebas unitarias heredan de esta clase. Agregar este método a esa clase significa que todos los proyectos con una clase de prueba unitaria heredada de la clase base funcionan bien.
MaxJ

3
Pequeño punto, pero probablemente sea mejor agregar un comentario a esta clase para explicar por qué es necesario.
John Darvill

43

Mi solución fue eliminar el marco de la entidad del proyecto a través del administrador nuget y agregarlo nuevamente.


99
PM> Update-Package -Reinstall "EntityFramework" -ProjectName "MyProj1"
VahidN

Esto funcionó para mí, y creo que podría ser la solución óptima
ccoutinho

Solución simple y limpia que funciona. Debería estar mucho más arriba en la lista
mode777

29

Resolví esto agregando un estado de uso en la parte superior de mi clase DBContext, así:

using SqlProviderServices= System.Data.Entity.SqlServer.SqlProviderServices;

1
Esta es la solución más limpia para este problema. Gracias.
Alexandru Dicu

Esta solución funciona y se ve limpia. Pregunta: ¿no perderemos el id de línea que se actualiza la clase DBContext? es decir, utilizando la generación de clase edmx?
NoloMokgosi

No puedo creer que esto fuera necesario y que Microsoft no lo haya corregido de alguna manera, pero esto funcionó para mí. Gracias por una solución simple.
Zar Bomba

Esta solución es funcionalmente la misma que MissingDllHack . Puede parecer más limpio, pero introduce código de solución en su clase de contexto. Este código también se marcará para su eliminación por herramientas como ReSharper y podría perderse fácilmente con el tiempo. Una buena solución, pero prefiero mantener la solución separada del contexto de una manera que no produzca advertencias de código.
Timothy Schoonover

20

He utilizado el registro basado en código para el proveedor. enlace1 enlace2

Acabo de crear la clase de configuración como

class DbContextConfiguration : DbConfiguration
{
    public DbContextConfiguration()
    {
        this.SetDatabaseInitializer(new DropCreateDatabaseAlways<MyDbContext>());
        this.SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
    }
}

El punto clave es este: SetProviderServices (SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);

y lo usé de esa manera

[DbConfigurationType(typeof(DbContextConfiguration))]
public class MyDbContext : DbContext
{
    public MyDbContext()
    {
        ...
    }

    public DbSet<...> ...{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        ...
    }
}

Tengo dos proyectos en una solución. El primero es la biblioteca de clases con el ensamblaje del marco de la entidad, la clase DbContext y los archivos tt. El segundo proyecto son formularios de Windows que deberían obtener datos mediante el uso del proyecto ef. @Nash: ¿Podría explicar dónde (en qué proyecto) colocó su clase DbContextConfiguration? Gracias
surfmuggle

Como se mencionó anteriormente, parece que las referencias adicionales son una forma de solucionar esto (ver comentario de Eric). Usé la consola nuget y activé este comando: Get-Project MyWinformsProject | Install-Package EntityFrameworkque me lo arregló. Aún así me gustaría entender mejor la razón.
surfmuggle

DbContextConfiguration ya parecía estar presente (en comparación con 2013), y agregar la línea DbConfiguraton sobre mi clase MyDbContext no resolvió el problema.
Anders Lindén

No necesita una clase DbConfiguration . Coloque el código siguiente en el inicio de aplicaciones (antes de utilizar EF): DbConfiguration.Loaded += (sender, e) => e.ReplaceService<DbProviderServices>((s, k) => System.Data.Entity.SqlServer.SqlProviderServices.Instance);.
Rosberg Linhares

14

Lo resolví con [DeploymentItem] en mi clase de inicialización de ensamblado

namespace MyTests
{
    /// <summary>
    /// Summary description for AssemblyTestInit
    /// </summary>
    [TestClass]
    [DeploymentItem("EntityFramework.SqlServer.dll")]
    public class AssemblyTestInit
    {
        public AssemblyTestInit()
        {
        }

        private TestContext testContextInstance;

        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        [AssemblyInitialize()]
        public static void DbContextInitialize(TestContext testContext)
        {
            Database.SetInitializer<TestContext>(new TestContextInitializer());
        }
    }
}

9

Tarde a la fiesta, pero las respuestas más votadas me parecieron hacks.

Todo lo que hice fue eliminar lo siguiente de mi app.config en el proyecto de prueba. Trabajó.

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

La verdadera solución!
Ben F

8

Tengo un problema, porque no agrego referencia a EntityFramework.sqlServer.dll. Cuando desarrollo el programa, funciona. Pero cuando publico la aplicación y la instalo, arroja un error.

Solo agrego referencia y Construir y publicar nuevamente.

Referencias


Hice este y funcionó. Básicamente, el proyecto mostrará una advertencia cuando los componentes de las bibliotecas no se refieran correctamente.
kbvishnu

5

He resuelto esto copiando manualmente el EntityFramework.SqlServer.dllarchivo en la bin folderaplicación principal.


4

Finalmente resolví esto. Resulta que tuve una implementación errónea de IDIsposable en mi clase de repositorio. Lo arreglé La implementación errónea causó una excepción stackoverflow ya que no estaba eliminando los recursos correctamente. Esto provocó que VS no ejecutara las pruebas y el motor de ejecución de la prueba se bloqueó.

Lo archivé con Microsoft aquí (esto fue antes de obtener la solución correcta). connect.microsoft.com/VisualStudio/feedback/details/775868/vs-test-execution-crashes-in-vs-2012#details

De todos modos, las compilaciones ahora funcionan bien en teamcity. Aunque, todavía tengo curiosidad de por qué ninguno de los motores de ejecución de VS Test tenía una manera elegante de decirme qué estaba pasando, ni Team City.

Descubrí la causa raíz al depurar manualmente la prueba (que solo me di cuenta después de tantos días, la solución me llevó 5 segundos).

Esperemos que esto ayude a alguien que se encuentre con tales problemas.


4

Veo un problema similar, y usando el método de esta publicación: ( http://entityframework.codeplex.com/workitem/1590 ), que resuelve mi problema.

Para solucionar el problema, puede hacer que su ensamblaje de prueba haga referencia directamente al ensamblaje del proveedor agregando alguna línea como esta en cualquier parte del ensamblaje de prueba: var _ = System.Data.Entity.SqlServer.SqlProviderServices.Instance;


3

Cuando inspeccioné el problema, noté que faltaban los siguientes dll en la carpeta de salida. La solución simple es copiar Entityframework.dll y Entityframework.sqlserver.dll con el archivo app.config a la carpeta de salida si la aplicación está en modo de depuración. Al mismo tiempo, cambie el parámetro de opción de compilación "Copiar a la carpeta de salida" de app.config para copiar siempre. Esto resolverá su problema.


2
Configuré "Copiar local" verdadero solo para "EntityFramework.SqlServer". Ahora funciona.
Alezis

3

Simplemente haga referencia o navegue el dll EF - EntityFramework.SqlServer.dll


Esto es lo que hice. Copié la referencia a "EntityFramework.SqlServer" de mi biblioteca al proyecto "en ejecución". ¡Eso funciono!
Håkon K. Olafsen

3

Tuve el mismo problema que intenté muchas veces pero no se resolvió, pero cuando instalé el paquete EntityFramework.SqlServerCompact resolvió instalar este paquete desde Nuget Package Manager.

Install-Package EntityFramework.SqlServerCompact

3

Creé un archivo estático de "inicio" y agregué el código para forzar la copia de la DLL en la carpeta bin como una forma de separar esta "configuración".


[DbConfigurationType(typeof(DbContextConfiguration))] public static class Startup { }

public class DbContextConfiguration : DbConfiguration
{
    public DbContextConfiguration()
    {
        // This is needed to force the EntityFramework.SqlServer DLL to be copied to the bin folder
        SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
    }
}


1
¡Gracias! Esto fue de gran ayuda.
Addison Schuhardt

1
Me alegra que hayas encontrado útil mi respuesta @AddisonSchuhardt :)
hatsrumandcode

2

No quería una referencia a EF en mi proyecto de aplicación (o copiar nada manualmente), así que agregué esto a los eventos posteriores a la compilación de mi proyecto EF:

cp $(TargetDir)EntityFramework.SqlServer.dll $(SolutionDir){your-main-bin-folder}

2

Esto solo ocurre dentro de mis proyectos de prueba de carga / unidad. Frustrante, simplemente tuve que surgir en un proyecto que he estado ejecutando durante 2 años. Debe haber sido un orden de prueba que rompe cosas. Supongo que una vez que se quita el fi se va.

Descubrí que simplemente declarar una variable que usa el valor correcto soluciona el problema ... Ni siquiera llamo al método. Solo defínalo. Extraño pero funciona.

    /// <summary>
    /// So that the test runner copies dlls not directly referenced by the integration project
    /// </summary>
    private void referenceLibs()
    {
        var useless = SqlProviderServices.Instance;
    }

2

Después de probar todas las otras soluciones sugeridas y no lograr que mi proyecto funcione, finalmente encontré un pequeño comentario en esta página :

Eliminar la carpeta BIN lo hizo por mí

Y funcionó para mí también.


1
Estaba fusionando 2 sucursales: mi proyecto no tenía cambios relacionados con EF, pero mis pruebas unitarias comenzaron a fallar sin ningún motivo. Eliminar la carpeta BIN los hizo funcionar nuevamente.
Arno Peters

@ Zeek2 este error es complicado. Hay muchas sugerencias diferentes para resolver este problema en la página que he citado. Esta es solo una de las muchas soluciones posibles. Siga investigando hasta que encuentre la solución que se aplicará a su problema particular, y buena suerte.
Ulises Alves

1

Agregar Entityframework.dll y Entityframework.sqlserver.dll al proyecto de referencia resolvió el problema.


1

Verifiqué la ventana de salida de depuración en el proyecto de prueba unitaria. EntityFramework.SqlServer.dll no se cargó. Después de agregarlo a la carpeta bin, las pruebas se ejecutaron con éxito.


1

También tuve un problema similar

Mi problema se resolvió haciendo lo siguiente:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí


1

Tuve el mismo problema con el DBContextobjeto Instantiating de un proyecto de prueba unitaria. Revisé mis paquetes de proyecto de prueba de unidad y pensé queEntityFramework paquete no estaba instalado, lo instalé desde Nuget y solucioné el problema (creo que es un error de EF).

codificación feliz


0

Acabo de recibir el mismo mensaje de error.

Tengo un proyecto separado para mi acceso a datos. Ejecutar el Proyecto web (que hacía referencia al proyecto de datos) localmente funcionó bien. Pero cuando implementé el proyecto web para azure el ensamblado: EntityFramework.SqlServer no se copió. Acabo de agregar la referencia al proyecto web y la redistribuí, ahora funciona.

espero que esto ayude a otros


0

Estaba trabajando en el tutorial de la Universidad de Contoso sin conexión y encontré el mismo problema al intentar crear mi primer controlador con EF. Tuve que usar Package Manager Console para cargar EF desde el caché nuget y creé una cadena de conexión a mi instancia local de SQL Server, mi punto aquí es que mi configuración de webConfig para EF puede no estar configurada como todos ustedes, pero pude para resolver mi problema eliminando completamente la sección "proveedores" dentro de "entityFramework"

Robert


0

Hay una solución fácil. abra las referencias en su proyecto, haga clic derecho en "System.Data" -> propiedades. Cambie "Copiar local" a "Verdadero".

El problema debe ser solucionado.


0

En mi caso, resolví el problema instalando SQL Server 2012 Developer Edition cuando había instalado previamente SQL Server Express 2012 (x64). Parece que me proporcionó la dependencia que falta.


0

elimine el marco de la entidad del proyecto a través de nuget y luego vuelva a agregarlo.


0

En mi caso dllno se copió aunque le agregué una referencia. Esto se debe a EntityFramework.SqlServer.dllque no se copia en su proyecto. Agregue ese dll y con suerte funcionará. Puede encontrarlo en el proyecto donde agregó el modelo de datos.


0

Además de todas las sugerencias útiles aquí, si está utilizando EF 6.1.3, asegúrese de que la versión .net de su proyecto sea 4.5 o más.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.