如何在c#中有条件地执行Fluent Migrator脚本

时间:2018-03-31 11:39:55

标签: c# fluent-migrator

我的应用程序使用用c#编写的桌面应用程序和窗口服务代码。 两者的业务逻辑和数据库层相同。我在数据库中使用Fluent Migrator进行CRUD操作。 我想从桌面应用程序添加一些表,从窗口服务添加一些表。 任何人都可以知道我是如何从同一个文件中分叉出来的。即迁移文件名  下面的“M01_Createtble_table1”代码:

[Tags("service")]
    [Tags("config")]
    [SchemaMigration("1.1.12")]
    public class M01_Createtble_table1: ForwardOnlyMigration
    {
        public override void Up()
        {
            string schemaName = "abc";
            string tableName = "table1";

            if (!Schema.Schema(schemaName).Table(tableName).Exists())
            {
                Create.Table(tableName).InSchema(schemaName)
                      .WithColumn("_id").AsInt32().NotNullable()
                .WithColumn("clo1").AsString(255).NotNullable().NotNullable();              


                Create.PrimaryKey("pk_" + tableName + "_id").OnTable(tableName).WithSchema(schemaName).Column("id");
            }
        }
    }

此类包括 [Tags(“service”)] 标记从窗口服务运行,而不是从桌面应用程序运行。

请给我解决方案。

1 个答案:

答案 0 :(得分:0)

您似乎可以通过以下方式进行操作:

  • 实施您自己的服务,将当前应用程序的类型参数(“服务”或“桌面”)注入其中
  • 然后,您在此服务中实现一个方法,该方法将获取类型的“标签属性”的值列表作为参数,并检查它是否包含相应的标签(“服务” /“桌面”)
  • 然后,您将此服务注入您的迁移中(as it is shown here in documentation of Fluent Migrator),并调用您在上一步中实现的方法,以检查是否应执行迁移