He utilizado yoman para generar una aplicación de API Web Core de ASP.Net a través del Editor de código de Visual Studio. Para referencia, seguí este tutorial aquí
La API funciona bien. Sin embargo, estoy tratando de usar Entity Framework Core Migrations con SQL Server. Cuando escribo lo siguiente en el terminal de código de Visual Studio:
Add-Migration MyDbInitialMigration
Recibo el siguiente mensaje:
'Add-Migration' is not recognized as an internal or external command, operable program or batch file.
Tengo instalada la dependencia Microsoft.EntityFrameworkCore.Tools: 1.1.0-preview4-final
. Hice esto usando la extensión .Net Core Project Manager (Nuget).
En Visual Studio 2015, este comando funciona bien desde la Consola del administrador de paquetes.
Supongo que usar el terminal de Visual Studio Code es el problema. Pero, ¿alguien sabe cómo puedo usar EF Core Migrations desde el propio editor de VS Code?
Gracias por cualquier ayuda.
Solución
Al ejecutar las dotnet ef migrations add InitialCreate
comando dotnet ef migrations add InitialCreate
el siguiente error:
No executable found matching command "dotnet-ef"
Para resolver esto, necesitaba instalar la siguiente dependencia, Y agregarla a la sección de herramientas:
Microsoft.EntityFrameworkCore.Tools.DotNet
El formato correcto para agregar una nueva migración es dotnet ef migrations add yourMigrationName
y para actualizar la base de datos es dotnet ef database update
Estoy trabajando en Mac, así que Ruby se instala por defecto. Mis comandos de EF requerían muchos parámetros adicionales --project
, --startup-project
etc. Esto fue un dolor al escribir cada vez, así que usé rastrillo para hacer esto más fácil.
En la raíz de mi proyecto, agregué un archivo llamado rakefile
con estos contenidos:
desc "Add Migraion"
task :addmigration do
ARGV.each { |a| task a.to_sym do ; end }
puts ARGV[1]
sh "dotnet ef migrations add " + ARGV[1] + " --project MyProject.Data/MyProject.Data.csproj --startup-project MyProject.Web/MyProject.Web.csproj "
end
desc "Remove Migraion"
task :removemigration do
ARGV.each { |a| task a.to_sym do ; end }
puts ARGV[1]
sh "dotnet ef migrations remove --project MyProject.Data/MyProject.Data.csproj --startup-project MyProject.Web/MyProject.Web.csproj"
end
desc "Update Database"
task :updatedatabase do
ARGV.each { |a| task a.to_sym do ; end }
puts ARGV[1]
sh "dotnet ef database update --project MyProject.Data/MyProject.Data.csproj --startup-project MyProject.Web/MyProject.Web.csproj"
end
Luego, en la línea de comandos, ejecuto estos comandos:
rake addmigration <migrationName>
rake removemigration
rake updatedatabase