Migrator.net удалить таблицу в Up(), что делать в Down()?
В моем проекте реализован Migrator.net, и я удаляю таблицу из текущей схемы. мой Up()
просто содержит Database.RemoveTable("FooTable")
, Но теперь я немного растерялся относительно того, что я должен сделать для своего Down()
, Нужно ли вручную анализировать все прошлые миграции на предмет изменений FooTable
? Есть ли способ запустить все предыдущие миграции на FooTable в Down()
?
2 ответа
Как насчет данных? Если было 50 000 строк, воссоздание пустой таблицы не возвращает к предыдущему состоянию.
Чтобы включить понижение базы данных с данными, вам необходимо:
- В Up() отсоедините таблицу от вашей модели данных (например, удалите FK) и переименуйте ее в что-то вроде DeleteMe_FooTable. Однако на самом деле не бросайте его.
- В Down() снова присоедините его к вашей модели данных - переименуйте его в исходное имя и восстановите FK.
- Через несколько дней / недель после развертывания, когда вы знаете, что на 100% гарантировано никогда не выполнять откат, администратор базы данных может вручную удалить таблицу.
Идея Down()
является то, что это обратит эффекты вас Up()
метод, так что технически, если вы бежали Up()
а потом Down()
сразу после того, как ваша схема базы данных вернется туда, где вы начали.
в вашем случае вам придется воссоздать таблицу в вашем Down()