Could not execute creando una migración con Entity Framework en ASP.NET Core 3.1
Lo que voy a contar en esta entrada, tiene que ver con algo que cambió en la Preview 4 de ASP.NET Core 3, y que puede volver loco a más de uno cuando trabaja con Entity Framework y trata de hacer una migración.
Partiré de la base de que tienes ciertos conocimientos base de Entity Framework y que has agregado en el proyecto una configuración del modelo, y que también has agregado una provisión para el seed data, y por lo tanto, estamos preparados para crear una migración.
Entiendo igualmente, que has agregado a tu proyecto el paguete NuGet Microsoft.EntityFrameworkCore.Design, que será necesario para ejecutar la migración, ya que el comando de migración utiliza este paquete para llevar a cabo el proceso.
A partir de este punto, vamos a crear una migración.
Para ello, puedes utilizar la línea de comandos, situarte dentro de la carpeta de tu proyecto, y ejecutar la instrucción de migración.
Por ejemplo:
dotnet ef migrations add CreateDatabase --output-dir Data/Migrations
Lamentablemente, es posible que te encuentres con un error cuando ejecutes este comando (que es precisamente éste, el motivo de la entrada):
Could not execute because the specific command or file was not found.
El problema es que el comando ef no ha sido encontrado.
El motivo es que desde la versión Preview 4 de ASP.NET Core 3, la herramienta ef ya no forma parte de .NET Core SDK, por lo que debe ser descargada de forma individual.
El hecho de que esté separada del SDK es que la herramienta puede ser modificada o actualizada fuera e independientemente del propio SDK, dando más flexibilidad y dinamismo a la propia herramienta y a los desarrolladores que la usamos.
Aunque la descarga de esta herramienta se encuentra en NuGet como dotnet-ef, vamos a utilizar la línea de comandos para hacer la instalación.
Por lo que desde la línea de comandos, ejecutaremos la instrucción de instalación correspondiente:
dotnet tool install --global dotnet-ef --version 3.1.7
Una vez hecho esto, si ejecutamos nuevamente nuestra instrucción de creación de la migración, veremos que esta vez se ejecuta correctamente.
dotnet ef migrations add CreateDatabase --output-dir Data/Migrations
Cuento todo esto, porque no es raro que un programador que haya trabajado en versiones previas de ASP.NET Core 3 Preview 4 o en migraciones de versión, se pueda encontrar con este típico y tonto problema, fácilmente solucionable.
Como siempre, sólo hay que saber qué tornillo debemos apretar.
Finalmente y como extra, si instalas las tools o herramientas globalmente (–global), puedes acceder a ellas en Windows en: %USERPROFILE%.dotnet\tools
Espero que te haya ayudado.
Happy Coding!