Подтвердить что ты не робот

Переходы EF Core в контейнере Docker

Я настраиваю WebApi в .NET Core 2.0. Я буду использовать Entity Framework Core в качестве ORM. Целое приложение будет развернуто как Docker Container. Меня немного беспокоит способ обработки миграций БД в этом случае. Я имею в виду производственную среду. Вот что мне удалось исследовать:

  • Мы просто запускаем Database.Migrate() в приложении и начинаем забывать весь world- хмм как-то мне не нравится ;-)
  • Database.Migrate(), управляемый параметром командной строки (запустите контейнер докера один раз с указанным параметром для переноса БД)
  • Войдите в контейнер приложения и выполните dotnet ef database update
  • Генерируйте старый простой SQL на основе миграций и выполняйте его из инструмента управления БД. Кажется oldschool но действительный. То, что я ненавижу, так это возиться с выполнением сценариев самостоятельно.
  • Подготовьте контейнер базы данных, в котором уже есть сценарии, сгенерированные из приведенного выше кода, и который будет автоматически выполнять их.

Любые другие предложения? Или какое самое лучшее и правильное решение?

С уважением

4b9b3361

Ответ 1

По моему мнению, это ваш первый пункт (из-за запуска Database.Migrate()), который в основном соответствует нашему варианту использования. Так что для меня это предпочтительный способ сделать это.

У нас есть несколько дополнительных созвездий в процессе запуска:

  • Docker-контейнер только локально (для среды разработки и тестирования обязательно)
  • Собственный проект запуска, который выполняет часть Database.Migrate() (потому что у нас более одного проекта с собственной базой данных)
  • Дополнительный проект с собственно API сайтом :)
  • Производственная среда с SQL-сервером Azure (опубликована и развернута с помощью конвейера Azure DevOps

  • Миграции создаются в собственном проекте через дотнет эф...

    dotnet ef migrations добавляет "ваше имя миграции" --startup-project "путь к вашему собственно API" --context "имя контекста базы данных"

Важно: вам нужно сначала изменить рабочий каталог на проект миграции, чтобы использовать другой запускаемый проект, но сгенерировать файлы миграции в "проекте миграции".

В нашем случае он отлично работает с разными API с собственными базами данных за szene.

С уважением