Я пытаюсь заставить миграции работать с моим проектом, используя беглый миграционный. Но из-за отсутствия документации я изо всех сил пытаюсь понять, как выполнить откат и вызвать метод Down
для моего класса миграции.
Я установил db с классом начальной версии 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;Интегрированная безопасность=true;multipleactiveresultsets=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");
}
}
Снова после запуска командного файла все работает нормально. Затем я посмотрел параметры командной строки для инструмента Fluent migrator и увидел параметр --version
. Я предполагал, что для отката к предыдущей версии я просто поставлю --version 1
, и будет вызван Down
из AddNewTable
. Однако этого не произошло. Консоль просто отображает метод «фиксация транзакции», а затем закрывается. Но таблица не была удалена и номер версии не изменился.
Я делаю это неправильно или кто-нибудь может увидеть какой-то фундаментальный недостаток в том, как я это делаю?