Saltar al contenido

¿Se admite la migración de EF Core Add desde la biblioteca estándar de .NET?

Investigamos en distintos sitios para tener para ti la respuesta para tu inquietud, si continúas con dificultades puedes dejarnos tu inquietud y respondemos con mucho gusto, porque estamos para servirte.

Solución:

La documentación cubre este caso como problema/limitación conocido cuando el DbContext se coloca dentro de un netstandardx.y Biblioteca de clases.

Solución alternativa 1: utilice una aplicación como proyecto de inicio

Si tiene una aplicación .NET Core o una aplicación .NET Framework existente (incluida una aplicación web ASP.NET Core), puede usarla como proyecto de inicio. De lo contrario, puede crear uno nuevo solo para usar con las herramientas de línea de comandos de .NET. Especifique un proyecto de inicio que sea una “aplicación ejecutable”. Ejemplo: consola

dotnet ef migrations list --startup-project ../MyConsoleApp/

Solución alternativa 2: objetivo cruzado de un marco ejecutable

Agregue un marco de trabajo de destino adicional al proyecto de biblioteca de clases. Esto puede ser una versión de .NET Core App o .NET Framework. Para convertir el proyecto en una aplicación .NET Core, agregue el marco “netcoreapp1.0” al proyecto como en el ejemplo a continuación: XML


  
    netcoreapp1.0;netstandard1.4
  

Al apuntar a .NET Framework, asegúrese de que el proyecto tenga como destino la versión 4.5.1 o posterior. XML


  
    net46;netstandard1.4
  

Para los usuarios de EF Core Package Manager Console Tools que ven los siguientes errores:

El proyecto de inicio ‘MyNetStandardLibrary’ apunta al marco ‘.NETStandard’. No hay tiempo de ejecución asociado con este marco, y los proyectos que lo tienen como objetivo no se pueden ejecutar directamente. Para usar las herramientas de la consola del administrador de paquetes de Entity Framework Core con este proyecto, agregue un proyecto ejecutable dirigido a .NET Framework o .NET Core que haga referencia a este proyecto y configúrelo como el proyecto de inicio; o actualice este proyecto para .NET Framework o .NET Core de destino cruzado.

O

Su proyecto de destino ‘MyNetCoreApp’ no coincide con su ensamblado de migraciones ‘MyNetStandardLibrary’. Cambie su proyecto de destino o cambie su ensamblaje de migraciones.


La documentación revela la causa de estos errores:

El proyecto de destino es donde se agregan los archivos (o en algunos casos se eliminan). El proyecto de destino tiene como valor predeterminado el proyecto predeterminado seleccionado en Package Manager Console, pero también se puede especificar mediante el parámetro -Project.

El proyecto de inicio es el que emulan las herramientas al ejecutar el código de su proyecto. El valor predeterminado es un conjunto como proyecto de inicio en el Explorador de soluciones. También se puede especificar mediante el parámetro -StartupProject.

En pocas palabras, debe configurar su Proyecto de inicio en un proyecto que tenga un tiempo de ejecución de .NET (.NET Core en este caso), luego asegúrese de configurar su proyecto de .NET Standard como Consola del administrador de paquetes > Proyecto predeterminado.

Ejemplo de solución CLI:

Add-Migration MyMigration -Project MyNetStandardLibrary -StartupProject MyNetCoreApp

Solución sin CLI:

  1. Hacer clic derecho en la aplicación .NET Core en su proyecto
  2. Hacer clic en Establecer como proyecto de inicio
  3. Abra la consola del administrador de paquetes
  4. Seleccione su proyecto .NET Standard del menú desplegable Proyecto predeterminado en la Consola del administrador de paquetes
  5. Ejecute su comando CLI (Add-Migration, dotnet ef migrations add, etc.)

No lo he probado con .Net Standard 1.6 pero funciona para 2.0.

Microsoft.EntityFrameworkCore.Tools.DotNet debe agregarse a cada una de sus bibliotecas de clases que tienen un DbContext en ellos. Haga clic derecho en el proyecto y seleccione Edit *.csproj. Luego, agrega lo siguiente:

  
    
  

Puede ver un tutorial más detallado aquí: Migraciones de EF 7 con múltiples DBContexts

Aquí puedes ver las reseñas y valoraciones de los usuarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *