2013-06-14 4 views
3

Я использую FluentMigrator управлять своими изменениями в базе данных, я выполняю мои миграции, как это:Как выполнить миграцию профиля с помощью FluentMigrator?

const string connectionString = @"Data Source=localhost, 1433;Initial Catalog=testdb;Integrated Security=SSPI;"; 
      Announcer announcer = new TextWriterAnnouncer(s => System.Diagnostics.Debug.WriteLine(s)); 
      announcer.ShowSql = true; 

      Assembly assembly = Assembly.GetAssembly(typeof (MigrationMarker)); 
      IRunnerContext migrationContext = new RunnerContext(announcer); 

      var options = new ProcessorOptions 
           { 
            PreviewOnly = false, // set to true to see the SQL 
            Timeout = 60 
           }; 

      var factory = new SqlServer2008ProcessorFactory(); 
      IMigrationProcessor processor = factory.Create(connectionString, announcer, options); 
      var runner = new MigrationRunner(assembly, migrationContext, processor); 

      runner.MigrateUp(true); 

То, что я не могу понять, однако, заключается в том, как выполнить миграцию для конкретного профиля?

Поэтому, учитывая, что мой Migrator имеет атрибут, как это:

[Profile("DevMigration")] 
public class DevMigration : FluentMigrator.Migration 
{ 

Я попробовал несколько вариантов:

runner.ProfileLoader.FindProfilesIn(assembly, "DevMigrator"); 
runner.ApplyProfiles(); 

Но я не становлюсь ближе, кто-нибудь знает, как Я могу выполнить миграцию профиля с помощью бегуна?

ответ

4

Try настройки профилей на контексте миграции перед передачей в миграционную бегуна так:

IRunnerContext migrationContext = new RunnerContext(announcer); 
migrationContext.Profile = "DevMigrator" 

Профиль метод погрузчик FindProfilesIn возвращает только миграцию с профилем. Конструктор RunnerContext загружает ProfileLoader, который по умолчанию загружает миграции для указанного профиля в контексте (я думаю, что это значение по умолчанию равно null, поэтому не имеет никаких миграций профиля).

Вам не нужно вручную вызывать метод ApplyProfiles, поскольку он вызывается в методе MigrateUp(bool).