es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué ejecuta mi aplicación el comando “dotnet ef migrations add”?

He creado un nuevo proyecto utilizando .NET 6 y EF Core 6, pero cuando intento crear una migración usando dotnet ef migrations add, la CLI comienza a ejecutar la aplicación después de mostrar “Build succeeded.”.

Esto no impide que se creen las migraciones, pero añade una cantidad considerable de tiempo al proceso, ya que necesito esperar a que la aplicación se cierre antes de emitir cualquier otro comando.

Fragmento de la salida de dotnet ef migrations add:

fragmento de la salida de dotnet ef migrations add

Dentro de la misma solución tengo muchos otros proyectos que utilizan .NET 5 y EF Core 5, los cuales crean las migraciones como se espera (solo se compila el proyecto, no se ejecuta).

¿Es esta una nueva funcionalidad de EF Core 6 o hay alguna configuración que cause este comportamiento?

EDITAR

Parece que el problema es que EF Core ignora las implementaciones de la fábrica IDesignTimeDbContext durante la creación de la migración y en su lugar obtiene una instancia del DbContext del generador de hospedaje. Aparentemente esto también puede ocurrir con EF Core 5.

Hay un problema abierto en dotnet/efcore en este enlace: Migrations script not using IDesignTimeDbContextFactory.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con EF Core ignorando las implementaciones de IDesignTimeDbContextFactory durante la creación de migraciones y, en su lugar, obtiene una instancia del DbContext del generador de host. Este problema se ha observado tanto en EF Core 5 como en EF Core 6.

    Existe un problema abierto en el repositorio de GitHub de dotnet/efcore (enlace proporcionado a continuación) que discute este problema con más detalle. Como solución alternativa, puedes asegurarte de que la aplicación no se inicie pasando la bandera --no-build al crear la migración usando dotnet ef migrations add.

    Enlace del problema en GitHub: Migrations script not using IDesignTimeDbContextFactory

Comments are closed.