миграции asp core ef на рабочем сервере

#entity-framework #asp.net-core #entity-framework-core

#entity-framework #asp.net-core #entity-framework-core

Вопрос:

Не удается выполнить миграции на рабочем сервере. Команда «обновление базы данных dotnet ef» работает на моем компьютере, но не выполняется на рабочих этапах, которые я пробовал: 1. Установите флажок execute code first migrations в Visual Studio перед публикацией. 2. dotnet ef database update не работает. Я установил .NET SDK, но в нем нет необходимых библиотек.

Любые предложения приняты.

Ответ №1:

Есть несколько вариантов:

  1. Создайте сценарий SQL с использованием dotnet ef migrations script и запустите его в своей рабочей базе данных.
  2. Вызов dbContext.Database.Migrate() во время выполнения во время запуска приложения (но будьте осторожны при запуске нескольких приложений / клиентов базы данных)

Кроме того, в следующем выпуске (1.0.0-preview3) Microsoft.EntityFrameworkCore.Tools мы будем поставлять ef.exe , которые вы можете указывать непосредственно на сборки (вместо project.json файлов) для выполнения миграции.

Комментарии:

1. оба работают! спасибо подсказка о ef.exe . Ожидание предварительного просмотра3 🙂

2. куда я должен поместить скрипт, сгенерированный миграциями на рабочем сервере?

3. @bricelam migrations script генерирует сценарий для всех изменений с момента первоначальной миграции? Как мне применить новые миграции в будущем после запуска сценария в рабочей базе данных? Как мне отслеживать, что было обновлено на рабочем сервере?

4. Добавьте --idempotent , чтобы получить сценарий, который применяет только неприменимые миграции. Или вы можете указать аргументы to и from , чтобы получить сценарий для ряда миграций

5. время, когда этот ответ должен быть обновлен @bricelam. У нас есть dotnet 5.0

Ответ №2:

Вы можете создать сценарий миграции, выполнив следующую команду:

 Script-Migration -From older_migration_name -To newer_migration_name -Context ApplicationDbContext
 

Сценарий будет иметь случайное имя и будет находиться по следующему пути:

 <Your_Project_Drive>:<Your_Project_Folder><Your_Project_Folder.Model>objDebugnetcoreapp3.1<Some_Random_Name>.sql
 

Теперь просто запустите этот скрипт на целевой базе данных рабочего сервера.

Комментарии:

1. Что делать, если их на разных серверах разные учетные записи, я использую общий хостинг