Перенос FluentMigrator прошел успешно, но без изменений в БД

Мне, должно быть, не хватает чего-то очень простого.

Я работаю над устаревшим проектом и пытаюсь FluentMigrator в миксе, потому что у меня есть интересная база данных предстоящие изменения и миграции данных, которые, я думаю, будут проще с помощью этого инструмента.

Для первоначальной миграции я просто хочу поднять базу данных до текущая производственная версия, как есть. Чтобы упростить первоначальную миграцию, Я написал сценарий своей базы данных SQL Server 2008, и миграция выполняется скриптовые команды в виде серии команд SQL.

Чтобы проверить это, я создаю полностью пустую базу данных и пытаюсь запустить ее из командной строки, используя следующее:

> migrate -a "C:\My\Project\Path\bin\debug\Rds.MyProjName.DBMigrations.dll" 
-db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2008;Initial Catalog=myNewDbName;
Integrated Security=SSPI" -version=20100901000000

Указанная версия является отметкой времени на первом классе миграции Атрибут миграции.

В командной строке все работает нормально - все Скрипт приближается и заканчивается на:

-- CreateProductionDbCircaSep2010: migrated

Однако, когда я смотрю на базу данных, она все еще пуста. Абсолютно ничего нет. Мой метод Up выглядит так:

public override void Up()
{
    var cmds = LoadEmbeddedResources
        .GetEmbeddedResource("scripted_db_2010-09-01.sql")
        .AsString()
        .ParseCommands();

    foreach (var c in cmds) {
        Execute.Sql(c);
    }

    CreateReferenceData();
}

(К вашему сведению, я анализирую сценарий вместо того, чтобы запускать его как есть, потому что я начал с использования Migrator.Net до того, как обнаружил, что он мертв, и это уже был настроен.)

Кто-нибудь может мне помочь? Это почти похоже на то, что транзакция не фиксации или какой-либо параметр командной строки, чтобы миграция выполнялась сухим run включен, но я его не вижу ...

РЕДАКТИРОВАТЬ: Дополнительные вещи, которые я пробовал

Чтобы убедиться, что строка подключения использует базу данных, которую я ожидал, я переименовал базу данных, а затем произошла ошибка входа в систему, как и ожидалось.

Для дальнейших тестов я сократил длину скрипта и попытался выполнить его, используя

public override void Up()
{
    Execute.Script(@"..\Resources\test.sql"); 
}

вместо команды за командой, но я получил те же результаты. Вот результат этого теста (обратите внимание, я редактировал пути и тому подобное):

C:\My\Project\Path\FluentMigrator.Net\ >migrate -a "C:\My\Project\Path\bin\debug
\My.Project.DBMigrations.dll" -db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2
008;Initial Catalog=myNewDbName;Integrated Security=SSPI" -version=2010090100000
0
Using Database SqlServer2008 and Connection String Data Source=.\SQLEXPRESS2008;
Initial Catalog=myNewDbName;Integrated Security=SSPI
-- VersionMigration: migrating ===============================================

-- CreateTable VersionInfo
-- VersionMigration: migrated
-- CreateProductionDbCircaSep2010: migrating =================================

-- ExecuteSqlScript C:\My\Project\Path\FluentMigrator.Net\..\Resources\test.sql
-- CreateProductionDbCircaSep2010: migrated

Пока нет таблиц в базе данных - нет даже ожидаемой таблицы VersionInfo.

9
задан Remi Despres-Smyth 16 November 2010 в 19:28
поделиться