Я использовал yoman для создания приложения ASP.NET Core Web API через редактор кода Visual Studio. Для справки я следил за этим учебником здесь
API работает отлично. Тем не менее, я пытаюсь использовать Entity Framework Core Migrations с SQL Server. Когда я ввожу следующее в терминал кода Visual Studio:
Add-Migration MyDbInitialMigration
Я получаю следующее сообщение:
'Add-Migration' is not recognized as an internal or external command, operable program or batch file.
У меня установлена установленная Microsoft.EntityFrameworkCore.Tools: 1.1.0-preview4-final
. Я сделал это, используя расширение .Net Core Project Manager (Nuget).
В Visual Studio 2015 эта команда отлично работает с консолью диспетчера пакетов.
Я полагаю, что использование терминала Visual Studio Code является проблемой. Но кто-нибудь знает, как я могу использовать EF Core Migrations из самого редактора VS Code?
Спасибо за любую помощь.
Решение
Выполнение dotnet ef migrations add InitialCreate
команду dotnet ef migrations add InitialCreate
следующую ошибку:
No executable found matching command "dotnet-ef"
Чтобы решить эту проблему, мне нужно было установить следующую зависимость и добавить ее в раздел инструментов:
Microsoft.EntityFrameworkCore.Tools.DotNet
Правильный формат для добавления новой миграции - это перенос dotnet ef migrations add yourMigrationName
и обновление базы данных - обновление базы данных dotnet ef database update
Я работаю на Mac, поэтому Ruby установлен по умолчанию. Моим EF-командам требовалось много дополнительных параметров --project
, --startup-project
и т. Д. Каждый раз --project
--startup-project
, поэтому я использовал rake, чтобы упростить это.
В корне моего проекта я добавил файл с именем rakefile
с таким содержимым:
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
Затем в командной строке я запускаю эти команды:
rake addmigration <migrationName>
rake removemigration
rake updatedatabase