下面是C#(而不是MSBuild的,南特或控制台亚军),基于碎片#2做的一个例子:
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");
}
}
你必须在C#中的烦恼做它用TaskExecutor
为类仅用于控制台应用程序(migrate.exe)。
我读过它,但我仍然不明白它是如何工作的。如何执行迁移?我有一个现有的项目,我只想添加一些类到项目中,并运行THAT项目的迁移,而无需外部工具。流利Migrator可能吗?像'FluentMigrator.Migrate(“数据库路径”,typeof(Migration024));',我将在'Program.Main()'中调用。 – Paya 2010-05-01 20:46:48