Conectando a SQL Server con EF6

entity-framework entity-framework-6

Pregunta

Hasta EF5, para conectarme a SQL Server 2012, todo lo que necesitaba es especificar una cadena de conexión que se parece a esto:

Data Source=.\SqlExpress;Initial Catalog=MyDatabase;Integrated security=True;MultipleActiveResultSets=True

Este método no funciona con EF6, dando excepción

No se ha encontrado ningún proveedor de Entity Framework para el proveedor ADO.NET 'System.Data.Odbc'. Asegúrese de que el proveedor esté registrado en la sección 'entityFramework' del archivo de configuración de la aplicación

No estoy usando el archivo app.config , estoy pasando la cadena de conexión al constructor MyContext. ¿Por qué está intentando usar el proveedor Odbc y, en su lugar, no está utilizando System.Data.SqlClient?

¿Qué se necesita hacer para conectarse a SQL Server con el código EF6 primero? Me aseguré de que EntityFramework.dll y EntityFramework.SqlServer.dll estén disponibles en la carpeta de la aplicación. Incluso he agregado el paquete EF6 nuget v6.0.0.1 en el proyecto WPF, aunque no usa la biblioteca EF directamente, y me aseguro de que el archivo App.Config creado automáticamente (por nuget) se copie a la carpeta de la Aplicación (Depuración), aún no. éxito.

También he tratado de establecer el proveedor manualmente en el código:

Data Source=.\SqlExpress;Initial Catalog=MyDatabase;Integrated security=True;MultipleActiveResultSets=True

Todavía no hay éxito. La estructura de mi proyecto es la siguiente (simplificada):

Proyecto WPF: no tiene referencia a EF (también se intentó agregar la referencia de EF)

Biblioteca de clases ViewModel - no tiene referencia a EF

Biblioteca de clases de modelos: tiene una referencia a la biblioteca EF (ambas DLL)

Biblioteca de clases de datos: tiene una referencia a la biblioteca de IU (ambos archivos DLL).

Estoy utilizando el enfoque CodeFirst, y esta configuración funciona sin ningún problema con EF5. Cualquier ayuda es muy apreciada.

Respuesta aceptada

Para mí este error se resolvió eliminando el paquete Glimpse.ADO

Editar diciembre 20, 2013 Creo que el paquete Glimpse.ADO ahora es compatible con EF6, pero no lo he probado.


Respuesta popular

Tuve el mismo problema y finalmente probé lo siguiente y funcionó (manteniendo los paquetes Glimpse EF5 y Glimpse ADO)

En el archivo web.config agregué una copia de la línea del proveedor existente, pero cambié su nombre invariante a "System.Data.Odbc".

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

Espero que esto ayude.

Jonathan




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é