2016-03-02 3 views
0

У меня есть таблица, которая требует удаления нескольких столбцов.Таблица резервного копирования FluentMigration

TableA 
{ 
    ID int, 
    Name NVarChar(MAX) NOT NULL, 
    ToDelete1 int NOT NULL, 
    ToDelete2 int NOT NULL, 
} 

Я использую FluentMigrator .NET (ActiveRecord Ruby On Rails, как миграция). Для миграции UP() это простой случай удаления столбцов.

Как создать нижнюю часть миграции?

Моя идея - создать клон таблицы во время процесса UP(), а затем скопировать схему и данные обратно в оригинал во время процесса Down().

Что такое самый простой способ достичь этого?

EDIT: Таблица A.ID ссылается на другие таблицы. Поэтому, если мы удаляем все строки из таблицы A и повторно вставляем их из TableA_Backup, это нужно делать, когда все ограничения внешнего ключа отключены и с идентификатором identity_insert включен, насколько я понимаю.

Пример кода был бы замечательным.

ответ

0

Для тех, кто заинтересован здесь, как мне удалось заставить его работать.

  1. Переименован в оригинальную таблицу с префиксом _Backup.
  2. Скопированные элементы из этой таблицы в новую схему таблицы с оригинальным именем. С идентификационной вставкой.
  3. Удаленные внешние ключи, относящиеся к старой таблице.
  4. Добавлены внешние ключи для обращения к новой таблице.

Каждый из этих шагов является обратимым, и вы можете создать перемещение вниз.