Генерировать полный SQL script из EF 5 Code First Migrations

Как использовать Entity Framework 5 First First Migrations для создания полной базы данных script из исходного (пустого) состояния до последней миграции?

Сообщение в блоге Блог MSDN предлагает сделать это, но, похоже, создает пустой script:

Update-Database -Script -SourceMigration: $InitialDatabase

Ответ 1

API, похоже, изменился (или, по крайней мере, он не работает для меня).

Выполнение следующего в консоли диспетчера пакетов работает как ожидалось:

Update-Database -Script -SourceMigration:0

Ответ 2

Чтобы добавить к ответу Мэтта Уилсона, у меня было несколько классов сущностей с кодом, но нет базы данных, так как я не делал резервную копию. Поэтому я сделал следующее в своем проекте Entity Framework:

Откройте консоль диспетчера пакетов в Visual Studio и введите следующее:

Enable-Migrations

Add-Migration

Дайте вашей миграции имя, например "Initial", а затем создайте миграцию. Наконец введите следующее:

Update-Database

Update-Database -Script -SourceMigration:0

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

Ответ 3

Для тех, кто использует ядро структуры сущностей, заканчивающееся здесь. Вот как ты это делаешь.

# Powershell / Package manager console
Script-Migration

# Cli 
dotnet ef migrations script

Вы можете использовать параметры -From и -To, чтобы сгенерировать скрипт обновления для обновления базы данных до определенной версии.

Script-Migration -From 20190101011200_Initial-Migration -To 20190101021200_Migration-2

https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/#generate-sql-scripts

У этой команды есть несколько параметров.

Миграция из должна быть последней миграцией, примененной к базе данных перед запуском сценария. Если миграции не были применены, укажите 0 (это значение по умолчанию).

Миграция с на - это последняя миграция, которая будет применена к базе данных после запуска сценария. По умолчанию это последняя миграция в вашем проекте.

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