Я пытаюсь заставить миграции работать с моим проектом, используя свободный мигратор. Но из-за отсутствия документации я пытаюсь выяснить, как выполнить откат и вызвать метод 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
. Это, однако, не радует. Консоль просто отображает метод фиксации транзакции, а затем закрывается. Но таблица не была удалена, а номер версии не изменился.
Я делаю это неправильно или кто-то видит какой-то фундаментальный недостаток в том, как я это делаю?