migratordotnet - запуск миграций из приложения (без создания или сборки) - PullRequest
12 голосов
/ 15 мая 2009

Есть ли способ запустить миграцию из самого приложения?

Спасибо!

Ответы [ 2 ]

13 голосов
/ 15 мая 2009

Я создаю экземпляр класса Migrator, а затем вы можете вызывать методы-члены, такие как MigrateToLastVersion() или MigrateTo(long versionnr)

Migrator.Migrator m = new Migrator.Migrator ("SqlServer", connectionString, migrationsAssembly)

m.MigrateToLastVersion();
1 голос
/ 15 мая 2009

Не понимаю, почему нет.

Взгляните на задачу nant http://code.google.com/p/migratordotnet/source/browse/trunk/src/Migrator.NAnt/MigrateTask.cs

Соответствующие биты здесь:

    private void Execute(Assembly asm)
    {
        Migrator mig = new Migrator(Provider, ConnectionString, asm, Trace, new TaskLogger(this));
        mig.DryRun = DryRun;
        if (ScriptChanges)
        {
            using (StreamWriter writer = new StreamWriter(ScriptFile))
            {
                mig.Logger = new SqlScriptFileLogger(mig.Logger, writer);
                RunMigration(mig);
            }
        }
        else
        {
            RunMigration(mig);
        }
    }

    private void RunMigration(Migrator mig)
    {
        if (mig.DryRun)
            mig.Logger.Log("********** Dry run! Not actually applying changes. **********");

        if (_to == -1)
            mig.MigrateToLastVersion();
        else
            mig.MigrateTo(_to);
    }
...