25

FluentMigratorコード内から移行を実行するためのチュートリアルやサンプルコードはありますか?いくつかの「はじめに...」チュートリアルは素晴らしいでしょう。私が見つけたのは、ソース内のFluentMigrator.Tests(単体テスト)FluentMigratorだけでした。これは、「はじめに...」ほど役に立ちません。

プロジェクトにいくつかのクラスを追加し、外部ツールを使用せずに、そのプロジェクトからの移行を実行したいだけです。Fluent Migratorで可能ですか?何かのようなもの

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

どちらから電話しProgram.Main()ますか?

4

5 に答える 5

19

FluentMigrator の最初の作成者の 1 人が、この「はじめに」ブログ投稿を書きました。

于 2011-04-04T11:34:19.147 に答える
16

私は彼らのソースコードからこれを盗みました...

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();
}

これに似たコードを WiX のカスタム アクション クラスで使用します。Target は、実行するアセンブリの名前です。あなたの場合、移行プロジェクトによって生成されたアセンブリになります。設定できる IRunnerContext のオプションは他にもあります。Namespace、PreviewOnly などと同様です。残念ながら、これは文書化されていないため、コードを調べて理解する必要があります。Migrate.exe アセンブリを生成するプロジェクトは、私がこれのほとんどを見つけた場所です。

于 2010-09-27T22:32:50.107 に答える
9

Stackoverflow のスクラップに基づいて、(MSBuild、Nant、またはコンソール ランナーではなく) C# で実行する例を次に示します。

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");
    }
}

TaskExecutorこのクラスは純粋にコンソール アプリ (migrate.exe) を対象としているため、C# でこれを行うと問題が発生します。

于 2013-03-08T13:45:16.330 に答える
5

流暢な移行者はMigrator.NETのフォークであるため、Migrator.netの開始が役立つ場合があります。

于 2010-05-01T20:10:06.753 に答える
1

このチュートリアルは、ビジュアル スタジオを使用している場合に、MSBuild で FluentMigrator をビルドして使用する方法を理解するのに役立ちました。

また、データベースのバックアップと復元の例も付属しています。

于 2012-09-28T09:29:14.317 に答える