Entity Framework - Почніть з початку - Скасувати / відкинути всі міграції


168

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

наприклад) PM> Disable-MigrationsабоRollback-Migrations

Я не хочу "оновлювати" початковий крок міграції (тобто щось на зразок InitialSchemaцілі), тому що більше не можу його знайти.

Відповіді:


358

Ви можете відкатати будь-яку міграцію, використовуючи:

Update-Database -TargetMigration:"MigrationName"

Якщо ви хочете відкатати всі міграції, ви можете скористатися:

Update-Database -TargetMigration:0

або еквівалент:

Update-Database -TargetMigration:$InitialDatabase 

У деяких випадках ви також можете видалити базу даних та всі класи міграції.


6
як завжди, ти найкращий.
drzaus

2
Я не розумію, ОП конкретно говорить: "Я не хочу" оновлювати "оригінальний крок міграції (тобто щось на зразок цілі InitialSchema), тому що більше не можу його знайти". Як ця відповідь робить те, що він хоче? Я очікував, що це відбудеться, це те, що я опинюсь у стані, коли мені доведеться enable-migrationsзнову. Вони, очевидно, корисні, але чи можуть вони виконати те, що просить ОП? (Будь ласка, не відповідайте "добре, він прийняв відповідь. Я намагаюся зрозуміти це, не бути розумним").
Майкл Блекберн

@MichaelBlackburn: Якщо ви хочете запустити enable-migrationsще раз, і ви розробляєте базу даних з нуля, вам просто потрібно дотримуватися останнього речення: видалити базу даних та весь код, пов'язаний з міграцією. Якщо ви почали використовувати міграції з існуючою базою даних, спочатку потрібно повернути всі міграції за допомогою другої або третьої команди, а потім видалити MigrationHistoryтаблицю та весь код, пов'язаний з міграцією. Це має привести вас до вихідної позиції. Ви також можете отримати стартову базу даних із резервної копії (перед використанням міграцій) та видалити весь код, пов'язаний з міграцією.
Ладислав Мрнка

4
@MichaelBlackburn: я мав на увазі те, що всі інші рішення, які я бачив, казали вам оновити свою першу міграцію з ім'ям , але моя проблема полягала в тому, що не було початкової чистої міграції для оновлення (назад) до - я просто хотів позбутися всіх міграцій, незалежно від способу. Тому ця відповідь стосувалася мого занепокоєння-TargetMigration:0
drzaus


8

Щоб було зрозуміло, якщо ви використовуєте LocalDb, коли ви хочете почати з нуля, просто видаліть базу даних через Провідник баз даних, а потім введіть enable-migrations -forceконсоль менеджера пакунків. Не видаляйте базу даних через папку App_Data, або у вас виникне наступна проблема .


2
Будьте обережні, роблячи це, оскільки це замінить міграцію \ Configuration.cs без попередження!
cgatian

Дякуємо за попередження, я начебто через деякий час скинув код першим способом, приємно, щоб один раз весь ваш код було розміщено на місці, мати версію управління джерелами для вашої бази даних, але я не побачив жодної іншої великої вигоди і спочатку повернувся до бази даних. Я використовую Red Gate Sql Порівняти для відстеження всіх дельт.
Брайан Огден


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