Откат к предыдущей версии в Fluent Migrator - PullRequest
6 голосов
/ 05 декабря 2011

Я пытаюсь заставить миграции работать с моим проектом, используя свободный мигратор. Но из-за отсутствия документации я пытаюсь выяснить, как выполнить откат и вызвать метод Down для моего класса миграции.

Я создал базу данных с начальной версией 1 класса:

    [Migration(1)]
    public class Baseline : Migration
    {
        public override void Up()
        {
            Execute.Script("1_Baseline\\baseline.sql");
        }

        public override void Down() { }
    }

Я выполняю миграции через командный файл, содержащий следующее:

".... \ tools \ fluentmigrator \ migrate.exe" --connection "Данные Источник =. \ Sqlexpress; Исходный каталог = ekmDomains; Интегрированный Security = true; множественные активные результаты = true; "--db SqlServer2005 --target "bin \ Release \ EkmDomains.Migrations.dll"

Это отлично работает. Поэтому я написал второй класс миграции, чтобы проверить его:

    [Migration(2)]
    public class AddNewTable : Migration
    {
        public override void Up()
        {
            Create.Table("NewTable").WithColumn("name").AsString();
        }

        public override void Down()
        {
            Delete.Table("NewTable");
        }
    }

Опять после запуска командного файла все работает нормально. Затем я посмотрел на параметры командной строки для инструмента беглого переноса и увидел параметр --version. Я предполагал, что для отката к предыдущей версии я просто поставлю --version 1, и будет вызван Down из AddNewTable. Это, однако, не радует. Консоль просто отображает метод фиксации транзакции, а затем закрывается. Но таблица не была удалена, а номер версии не изменился.

Я делаю это неправильно или кто-то видит какой-то фундаментальный недостаток в том, как я это делаю?

1 Ответ

16 голосов
/ 06 декабря 2011

Для перехода вниз используйте -t migrate:down. Помимо «вверх-вниз», в справке для migrate.exe также перечислены откаты rollback:toversion и rollback:all.

.
...