Pay*_*aya 24 .net c# migration data-migration fluent-migrator
是否有任何教程或示例代码用于FluentMigrator从代码中执行迁移?一些"入门......"教程会很棒.所有我能找到的都是FluentMigrator.Tests(单元测试),内部FluentMigrator源代码,没有"入门......"那样有用.
我只想在项目中添加几个类,并从该项目运行迁移,无需外部工具.是否可以在Fluent Migrator中使用?就像是
FluentMigrator.Migrate("database path", typeof(Migration024));
Run Code Online (Sandbox Code Playgroud)
我打电话给Program.Main()谁?
Jus*_*udd 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();
}
Run Code Online (Sandbox Code Playgroud)
我在WiX的自定义操作类中使用与此类似的代码.Target是要执行的程序集的名称.在您的情况下,它将是您的迁移项目生成的任何程序集.您可以设置IRunnerContext上的其他选项.就像Namespace,PreviewOnly等一样.不幸的是,它没有记录,所以你必须深入研究代码才能弄明白.生成Migrate.exe程序集的项目是我发现大部分内容的地方.
这是基于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");
}
}
Run Code Online (Sandbox Code Playgroud)
你在C#中遇到麻烦,TaskExecutor因为该类纯粹是为了控制台应用程序(migrate.exe).