是否有任何用于从代码中执行FluentMigrator
迁移的教程或示例代码?一些“入门......”教程会很棒。所有我能找到的是{i> FluentMigrator.Tests (单元测试),在FluentMigrator
源内,这不像“入门......”那样有用。
我只想在项目中添加几个类,并从那个项目中运行迁移,而无需外部工具。是否可以在Fluent Migrator中使用?像
这样的东西FluentMigrator.Migrate("database path", typeof(Migration024));
我会从Program.Main()
拨打电话?
答案 0 :(得分:19)
FluentMigrator的原始作者之一刚写了this "Getting started" blogpost。
答案 1 :(得分: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程序集的项目是我发现大部分内容的地方。
答案 2 :(得分:8)
以下是基于Stackoverflow上的剪贴板在C#(而不是MSBuild,Nant或控制台运行器)中执行此操作的示例:
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
在C#中进行此操作会遇到麻烦,因为该类仅适用于控制台应用程序(migrate.exe)。
答案 3 :(得分:4)
由于流畅的迁移器是Migrator .NET的一个分支,因此您可能会发现迁移器的getting started .net很有用
答案 4 :(得分:1)
This tutorial对于了解如何使用MSBuild构建和使用FluentMigrator非常有用。
还附带了备份和恢复数据库的示例。