#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:
Есть несколько вариантов:
- Создайте сценарий SQL с использованием
dotnet ef migrations script
и запустите его в своей рабочей базе данных. - Вызов
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. Что делать, если их на разных серверах разные учетные записи, я использую общий хостинг