c# - mvc - No se puede encontrar System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer
entity framework tutorial español c# pdf (8)
@ LeLong37
Tuve exactamente el mismo error que usted: "... No se ha encontrado ningún proveedor de Entity Framework para ''System.Data.SqlServerCe.4.0'' proveedor ADO.NET ..."
Lo resolví agregando una referencia a "EntityFramework.SqlServerCompact" from directory "packages / EntityFramework.SqlServerCompact.6.0.0-rc1 / lib / net40"
espero que esto ayude
Estoy construyendo un DbContext desde un SqlConnection. Cuando lo uso, recibo el siguiente error:
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.
Estoy usando 6.0.0-alpha2-11210.
Lo encontré raro ya que tengo una referencia hacia Entity.SqlServer y que logré ''arreglarlo'' poniendo la siguiente línea de código antes de una consulta:
var patch_only = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
¿Es un error de la versión alfa?
Agregué un screencast en Youtube describiendo esto y la solución en aproximadamente 6 minutos. Hice esto porque la solución provista por Fabrice no funciona cuando trabajas con Team Build, que tiene el mismo problema.
Espero no llegar tarde. Estoy usando ASP.NET MVC
4 y Entity Framework 6 alpha 3
y me encontré con un problema similar.
Tengo varios proyectos en mi solución. Los 2 proyectos principales son:
MyProject.Infrastructure.EntityFramework
MyProject.Web
En el primer proyecto configuraría todos mis repositorios, DbContext
, etc. En este proyecto tengo 2 referencias:
EntityFramework
EntityFramework.SqlServer
El segundo proyecto es mi sitio web. Utiliza los repositorios en el primer proyecto para devolver mis datos. Por ejemplo:
private readonly IMyRepository myRepository;
public MyController(IMyRepository myRepository)
{
this.myRepository = myRepository;
}
public ActionResult Details(int id)
{
MyObject myObject = myRepository.FindById(id);
return View();
}
Aquí es donde tuve mis problemas, llamando a FindById
.
Todo lo que hice fue agregar la siguiente referencia a mi sitio web:
EntityFramework.SqlServer
En mi web.config:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
Y debajo de la etiqueta system.webServer
cierre:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
Espero que esto sea de ayuda.
Estoy usando EF 4 y EF 6 dos proyectos diferentes en la misma solución.
Después de usar NuGet para EF 6.0, todas las referencias a EF 4 se eliminaron en mi proyecto de prueba. Tuve que eliminar EF6 del proyecto nuevamente y agregué referencias a System.Data.Entity para EF4.
Para acceder a los datos a través de EF6 en el proyecto de prueba, tuve que hacer referencia manualmente a EntityFramework.SqlServer.dll (4.5) y usé la recomendación de hackear (arriba).
No hubo necesidad de hacer ninguna alternancia en la aplicación .config de mi proyecto de prueba.
no
<section name="entityFramework" ...
y no
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> ...
Lo que hiciste crea una referencia a EntityFramework.SqlServer.dll. Asegura que este ensamblaje se copie a la carpeta bin de proyectos usando su ensamblaje de acceso a datos.
Puede hacer lo mismo agregando algo como lo siguiente en algún lugar de su conjunto de acceso a datos:
Type _Hack = typeof(System.Data.Entity.SqlServer.SqlProviderServices)
Resolví el problema copiando los dos archivos.
EntityFramework.SqlServer.dll
EntityFramework.SqlServer.xml
a la /bin
.
Si tiene problemas con un sitio MVC nuevo de la plantilla: 1) Desinstale Microsoft.ASPNet.Identity.EntityFramework (le preguntará si desea desinstalar Entity Framework: hágalo.) 2) Instale Entity Framework 3) Reinstale Microsoft.ASPNET.Identity.EntityFramework
Debería estar trabajando ahora.
El problema es la referencia "EntityFramework.SqlServer".
En mi proyecto, cuando agregué Entity Framework 6.0.1 utilizando NuGet en la capa de acceso a datos, obtuve el mismo error en el lado del cliente ya que el lado del cliente no tiene esa referencia.
Entonces, resolví el problema agregando esa referencia en el lado del cliente también.