Створіть повний сценарій SQL з міграцій коду EF 5


145

Як я можу використовувати Entity Framework 5 Code First Migrations для створення повного сценарію бази даних від початкового (порожнього) стану до останньої міграції?

Публікація в блозі MSDN Blog пропонує це зробити, але, схоже, створюється порожній сценарій:

Update-Database -Script -SourceMigration: $InitialDatabase

Відповіді:


286

Здається, API змінився (або, принаймні, він не працює для мене).

Запуск наступного в консолі диспетчера пакунків працює як очікується:

Update-Database -Script -SourceMigration:0

14
Я усвідомлюю, що це правильна відповідь, але як ви дізналися, що 0 працює, коли параметр - це звичайно рядок ?!
Дейв Р

27
Просто спроби та помилки, дійсно після того, як я спробував усе, що я міг би придумати, щоб обдурити це :)
Метт Вілсон,

1
Це створює точну копію бази даних? Включаючи вміст таблиці?
Мультитут

2
@Multitut: ні, це буде робити лише структуру.
Мартін Кларк

6
Тільки в разі , якщо хто - то шукає , як зробити це в EfCore і в кінцевому підсумку тут , як я, команда: dotnet ef migrations script. Більше про документацію: docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/…
Рафаель Міцелі

13

Для тих, хто використовує базове ядро сутності, яке закінчується тут. Ось як ви це робите.

# 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(це за замовчуванням).

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

Ідемпотентна сценарій може бути необов'язково генерується. Цей сценарій застосовує міграції лише у тому випадку, якщо вони вже не були застосовані до бази даних. Це корисно, якщо ви точно не знаєте, якою була остання міграція, застосована до бази даних, або якщо ви розгортаєтесь у декілька баз даних, кожна з яких може бути при різній міграції.


Це працює до певної міри. Після того, як ви почнете змінювати назви стовпців, він почне видавати помилки, створення DacPac є кращим рішенням. Особливо, коли ви починаєте використовувати Трубопроводи в CI / CD
Нік Тернер

8

Щоб додати відповідь Метта Вілсона, я мав купу класів сутності першого коду, але не було бази даних, оскільки я не брав резервну копію. Тому я зробив наступне у своєму проекті Entity Framework:

Відкрийте консоль менеджера пакунків у Visual Studio та введіть наступне:

Enable-Migrations

Add-Migration

Дайте ім’я міграції, наприклад "Початкове", а потім створіть міграцію. Нарешті введіть наступне:

Update-Database

Update-Database -Script -SourceMigration:0

Заключна команда створить таблиці вашої бази даних із класів вашої сутності (за умови, що класи вашої сутності добре сформовані).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.