2010-05-01 12 views
22

Gibt es Tutorials oder Beispielcode für die Ausführung von FluentMigrator Migrationen aus dem Code? Einige "Getting Started" Tutorials wären einfach großartig. Alles, was ich finden konnte, war FluentMigrator.Tests (Komponententests), innerhalb FluentMigrator Quelle, die nicht so hilfreich wie "Getting Started ..." wäre.Ausführen von FluentMigrator-Migrationen aus Code

Ich möchte nur wenige Klassen zum Projekt hinzufügen und die Migrationen von , dass Projekt, ohne externe Tools. Ist es in Fluent Migrator möglich? Etwas wie

FluentMigrator.Migrate("database path", typeof(Migration024)); 

die ich von Program.Main() anrufen würde?

Antwort

4

Da fließend Migrator ist ein Fork von Migrator .NET Sie die getting started für Migrator .net hilfreich

+2

Ich habe es gelesen, aber ich verstehe immer noch nicht, wie es funktioniert. Wie führe ich die Migrationen durch? Ich habe ein bestehendes Projekt, und ich möchte nur wenige Klassen zum Projekt hinzufügen und die Migrationen von THAT Projekt ohne externe Tools ausführen. Ist es in Fluent Migrator möglich? Etwas wie 'FluentMigrator.Migrate (" Datenbankpfad ", typeof (Migration024));', was ich in 'Program.Main()' aufrufen würde. – Paya

16

ich dies aus ihrem Quellcode cribbed finden könnte ...

using (IAnnouncer announcer = new TextWriterAnnouncer(Console.Out)) 
{ 
    IRunnerContext migrationContext = new RunnerContext(announcer) 
    { 
     Connection = "Data Source=test.db;Version=3", 
     Database = "sqlite", 
     Target = "migrations" 
    }; 

    TaskExecutor executor = new TaskExecutor(migrationContext); 
    executor.Execute(); 
} 

I-Code verwenden, ähnlich wie dies in einer benutzerdefinierten Aktionsklasse in WiX. Ziel ist der Name der Assembly, die Sie ausführen möchten. In Ihrem Fall wäre es die Assembly, die von Ihrem Migrationsprojekt erstellt wird. Es gibt andere Optionen für den IRunnerContext, die Sie festlegen können. Wie Namespace, PreviewOnly, etc. Leider ist es nicht dokumentiert, so dass Sie in den Code eintauchen müssen, um es herauszufinden. Das Projekt, das die Migrate.exe-Assembly generiert, habe ich am meisten gefunden.

+2

MigrationRunner ist wahrscheinlich eine bessere Klasse für die Ausführung von Migrationen aus Code usw. – Buthrakaur

1

This tutorial war nützlich für mich herauszufinden, wie FluentMigrator mit MSBuild zu bauen und zu verwenden, wenn Sie Visual Studios verwenden.

Auch kommt mit dem Beispiel der Sicherung und Wiederherstellung einer Datenbank.

6

Hier ist ein Beispiel davon in C# zu tun (und nicht MSBuild, Nant oder die Konsole Läufer), basierend auf Schrotte auf Stackoverflow:

static void Main(string[] args) 
{ 
    string connectionString = @"server=.\SQLEXPRESS;database=testdb;uid=sa2;pwd=Passw0rd"; 
    Announcer announcer = new TextWriterAnnouncer(s => System.Diagnostics.Debug.WriteLine(s)); 
    announcer.ShowSql = true; 

    Assembly assembly = Assembly.GetExecutingAssembly(); 
    IRunnerContext migrationContext = new RunnerContext(announcer); 

    var options = new ProcessorOptions 
    { 
     PreviewOnly = false, // set to true to see the SQL 
     Timeout = 60 
    }; 
    var factory = new SqlServer2008ProcessorFactory(); 
    using (IMigrationProcessor processor = factory.Create(connectionString, announcer, options)) 
    { 
     var runner = new MigrationRunner(assembly, migrationContext, processor); 
     runner.MigrateUp(true); 

     // Or go back down 
     //runner.MigrateDown(0); 
    } 
} 

[Migration(1)] 
public class CreateUserTable : Migration 
{ 
    public override void Up() 
    { 
     Create.Table("person") 
      .WithColumn("Id").AsGuid().PrimaryKey() 
      .WithColumn("Name").AsString(); 
    } 

    public override void Down() 
    { 
     Delete.Table("person"); 
    } 
} 

Sie Schwierigkeiten haben, würden es in C# zu tun mit TaskExecutor wie class ist nur für die Konsolen-App (migrate.exe) gedacht.

Verwandte Themen