Я использую Asp.Net Boilerplate (3.8.1) с Entity Framework Core. У меня есть 3 среды (dev, staging, production), поэтому у меня есть 3 appsettings.json в моем проекте .Web.Host (каждая со строками ConnectionStrings по умолчанию, указывающими на соответствующую базу данных).
Если я запускаю Update-Database
-> моя база данных Dev (указанная в appsettings.json) правильно обновляется
Начиная с EFCore 2.0, вы должны установить переменную env для обновления промежуточной базы данных (см. ef core не использовать ASPNETCORE_ENVIRONMENT во время обновления базы данных).
Я попробовал это (установив переменную env в промежуточную), и это не сработало с моим проектом Asp.Net Boilerplate. Я быстро попробовал с помощью простого EFCore, и настройка среды, похоже, не работает.
Есть ли другой способ сделать это?
Я делаю это следующим образом: если в выпуске есть изменения схемы, я использую инструмент dotnet cli для экспорта сценариев миграции.
Так например:
dotnet ef migrations script -i -o "C:\temp\mychanges.sql"
Это идемпотентный сценарий, который применяет миграции только в том случае, если они еще не были применены к базе данных. Это полезно, если вы развертываете несколько баз данных, каждая из которых может находиться на разных этапах миграции.