2009-05-15 13 views

cevap

13

Ben Yükseltici sınıfının bir örneğini ve sonra neden olmasın görmüyorum MigrateToLastVersion() veya MigrateTo(long versionnr)

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

m.MigrateToLastVersion(); 
+0

Üzgünüm ama Bir sınıf projekt yaptı ve her şeyi yaptı ... alamadım:

http://code.google.com/p/migratordotnet/source/browse/trunk/src/Migrator.NAnt/MigrateTask.cs

İlgili bit burada nant görev göz at Öğreticilerdeki gibi. Sonra yeni bir web projesi yaptım ve migration.dll ve derlenmiş derlemem dahil. Ardından kaynak kodunuzu ekledim, ancak doğru taşıma düzeneğini nerede bulabilirim? Sadece "DBMigration" ad alanımı bulur, ancak "DBMigration bir ad alanı, ancak bir tür olarak kullanılır" bir hata iletisi geliyor. Bana yardımcı olabilir misiniz? – Lichtamberg

+0

Çözüldü ... System.Reflection.Assembly.Load ile (...) – Lichtamberg

+0

Bu gerçekten nasıl yapılması gerektiği. :) Taşımalarınızı içeren derleme dosyasını bir Assembly örneğine yükleyin ve bunu Migrator sınıfına iletin. :) –

1

gibi üye yöntemlerini çağırabilir.

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); 
    } 
İlgili konular