J'ai utilisé yoman pour générer une application API Web ASP.Net Core via l'éditeur de code Visual Studio. Pour référence, j'ai suivi ce tutoriel ici
L'API fonctionne bien. Toutefois, j'essaie d'utiliser les migrations Entity Framework Core avec SQL Server. Lorsque je tape ce qui suit dans le terminal de code Visual Studio:
Add-Migration MyDbInitialMigration
Je reçois le message suivant:
'Add-Migration' is not recognized as an internal or external command, operable program or batch file.
J'ai la dépendance Microsoft.EntityFrameworkCore.Tools: 1.1.0-preview4-final
installée. J'ai fait cela en utilisant l'extension .Net Core Project Manager (Nuget).
Dans Visual Studio 2015, cette commande fonctionne correctement à partir de la console du gestionnaire de packages.
Je suppose que l'utilisation du terminal de Visual Studio Code est le problème. Mais est-ce que quelqu'un sait comment utiliser EF Core Migrations à partir de l'éditeur de code de VS lui-même?
Merci pour toute aide.
Solution
L'exécution de la commande dotnet ef migrations add InitialCreate
a généré l'erreur suivante:
No executable found matching command "dotnet-ef"
Pour résoudre ce problème, je devais installer la dépendance suivante ET l'ajouter à la section outils:
Microsoft.EntityFrameworkCore.Tools.DotNet
Le format correct pour ajouter une nouvelle migration est dotnet ef migrations add yourMigrationName
et pour mettre à jour la base de données est dotnet ef database update
Étape 1 Nous devons d’abord ajouter une référence dans le fichier * .csproj de la manière suivante
Étape 2 dans Bash/Command propt
restauration dotnet
Étape 3
les migrations dotnet ef ajoutent MyDbInitialMigration
Je travaille sur Mac, donc Ruby est installé par défaut. Mes commandes EF nécessitaient beaucoup de paramètres supplémentaires --project
, --startup-project
etc. Cela était difficile à taper à chaque fois, alors j’ai utilisé rake pour faciliter cela.
Dans la racine de mon projet, j'ai ajouté un fichier appelé rakefile
avec le contenu suivant:
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
Puis, en ligne de commande, j'exécute ces commandes:
rake addmigration <migrationName>
rake removemigration
rake updatedatabase