Bienvenido a proyecto online, en este lugar hallarás la resolución que estabas buscando.
Solución:
No necesita instalar el paquete EF6 NuGet en la aplicación cliente. El error no está relacionado con la aplicación cliente porque la aplicación cliente se conecta a los servicios WCF y no sabe si existe una base de datos o una capa de acceso a datos.
Este error está relacionado con la falta de EntityFramework.SqlServer.dll
en la carpeta bin de su biblioteca de servicios y/o proyecto anfitrión.
Opción 1
La forma más sencilla es instalar EF6 utilizando el Administrador de paquetes NuGet en su proyecto WCF Host también, y si se instaló antes, intente desinstalarlo e instalarlo nuevamente. De esta manera EntityFramework.SqlServer.dll
a los directorios de salida.
Tenga en cuenta que de alguna manera está en contra de las reglas de n capas porque sus bibliotecas por encima de la capa de acceso a datos dependen de EF6, que no es tan bueno.
opcion 2
Como solución para copiar EntityFramework.SqlServer.dll
en los directorios de salida, asegúrese de Copy Local
de este dll se establece en true
y luego poner este código en su DbContext
constructor:
var ensureDllIsCopied = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
Se asegura EntityFramework.SqlServer.dll
se copia en el directorio de salida de los consumidores del proyecto de acceso a datos. Esta es una solución.
De esta manera, no tiene ninguna dependencia de EF en sus capas por encima de la capa de acceso a datos.
Lo solucioné instalando el marco de la entidad en el sitio de host de WCF.
Eso funciono.
Hay un problema que varias personas han informado al usar EF 6 con Code First en torno al proveedor EntityFramework.SqlServer (u otro proveedor que están usando) que no se copia localmente. Esto conduce al siguiente error:
System.InvalidOperationException: el tipo de proveedor de Entity Framework ‘System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer’ registrado en el archivo de configuración de la aplicación para el proveedor ADO.NET con el nombre invariable ‘System.Data.SqlClient’ no se pudo cargar . Asegúrese de que se use el nombre completo del ensamblado y que el ensamblado esté disponible para la aplicación en ejecución. Consulte http://go.microsoft.com/fwlink/?LinkId=260882 para obtener más información.
Esto solo ocurre cuando el paquete EntityFramework NuGet no está instalado en el proyecto de inicio (es decir, solo está instalado en una biblioteca de clases, etc.)
Este problema no es específico de Entity Framework, pero es un efecto secundario de cómo MSBuild resuelve qué ensamblajes deben implementarse. El problema se produce porque no hay ningún código en la aplicación que haga referencia explícita a los tipos en EntityFramework.SqlServer.dll (o el ensamblaje del proveedor correspondiente), ya que EF cargará el ensamblaje en tiempo de ejecución según la información del archivo App/Web.config. Como resultado, MSBuild no detecta que se necesita el ensamblaje y no lo copiará en el directorio de salida.
valoraciones y comentarios
Si para ti ha sido provechoso nuestro post, te agradeceríamos que lo compartas con el resto juniors de este modo contrubuyes a difundir este contenido.