ASP. NET Ядро MVC: как только я опубликовал проект, как заставить миграции обновиться до базы данных? - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть проект, над которым я работал в ASP. NET Core MVC, и теперь, когда я опубликовал его:

enter image description here

Я хочу иметь возможность принудительно выполнять все миграции в базу данных, активную на нашем сервере (моя локальная база данных - это просто копия, поэтому имена и имена таблиц и т. Д. c совпадают).

Один раз Я копирую файлы в папку на сервере и запускаю ее, в настоящее время ни одна из миграций не обновляет базу данных, и я получаю недостающие столбцы и таблицы и т. Д. c ошибки.

Я попытался использовать cmd для опубликованного файла с

dotnet AppName.dll database update

, как предлагали многие, но это не сработало вообще. Кажется, он вообще не читает команду.

enter image description here

Может кто-нибудь дать мне один прямой ответ? Я изо всех сил пытался найти ответ, который не объясняет, что делать, или у него больше не работают старые методы.

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Вы можете сгенерировать сценарий ваших миграций и установить сценарий в вашей среде развертывания. Преимущество заключается в том, что вы можете хранить сценарии миграции, например, в папке и отслеживать, что было установлено или что необходимо установить в следующем выпуске.

Сценарий миграции создается с помощью команды Script-Migration:

Script-Migration -From <PreviousMigration> -To <LastMigration>

Перед запуском сценария обязательно проверьте документацию EF (справочник по инструментам Entity Framework Core).

1 голос
/ 05 апреля 2020

Вы можете использовать

app.UseDatabaseErrorPage();

в вашем StartUp.Configure. Откроется страница «Применить миграции», которую вы знаете по разработке.

Другим способом будет создание сценария миграции в разработке и его использование в рабочей базе данных. Вы можете создать идемпотентный сценарий с помощью cmd, находясь в каталоге проектов (где находится файл StartUp.cs).

dotnet ef migrations script --output "migration.sql" --idempotent

Это создаст сценарий (миграция нового файла. sql), который будет переведите любую базу данных, которая находится на предыдущем уровне в истории миграции, на текущий уровень.

...