2009-05-15 2 views

ответ

13

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

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

m.MigrateToLastVersion(); 
+0

Извините, но я не понимаю ... Я сделал класс-Projekt и сделал все, как в учебниках. Затем я создал новый веб-проект и включил файл migration.dll и мою скомпилированную сборку. Затем я включил исходный код, но где я могу найти нужную миграционную сборку? Он находит только мое пространство имен «DBMigration», но появляется сообщение об ошибке «DBMigration - это пространство имен, но оно используется как тип». Вы можете мне помочь? – Lichtamberg

+0

Решил это ... С System.Reflection.Assembly.Load (...) – Lichtamberg

+0

Вот как это должно быть сделано. :) Загрузите файл сборки, содержащий ваши миграции, в экземпляр сборки и передайте его классу Migrator. :) –

1

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

Посмотрите на задачу 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); 
    } 
Смежные вопросы