Ответ 1
Правильный формат для добавления новой миграции - dotnet ef migrations add yourMigrationName
и обновить базу данных dotnet ef database update
Я использовал 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 Terminal является проблемой. Но кто-нибудь знает, как я могу использовать EF Core Migrations из самого редактора VS Code?
Спасибо за любую помощь.
Решение
Запуск команды 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
Шаг 1 Сначала нам нужно добавить ссылку в файл *.csproj следующим образом
Шаг 2 в Bash/Командная команда
восстановление dotnet
Шаг 3
Dotnet EF миграции добавить MyDbInitialMigration
Я работаю на Mac, поэтому Ruby установлен по умолчанию. Моим EF-командам потребовалось много дополнительных параметров --project
, --startup-project
и т.д. Каждый раз --startup-project
это было --startup-project
, поэтому я использовал rake, чтобы упростить это.
В корне моего проекта я добавил файл с именем rakefile
со следующим содержимым:
desc "Add Migraion"
task :'add-migration' 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 :'remove-migration' 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 :'update-database' 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 add-migration <migrationName>
rake remove-migration
rake update-database