新的迁移而不删除旧数据

时间:2014-05-12 06:36:07

标签: database-migration fluent-migrator

我们在一个项目中使用FluentMigrator。假设我的代码如下所示。

所以每当我们运行新的迁移时,所有以前的数据都会被删除。是否有办法避免它并在不改变的地方保持数据安全?

  public class Migration1 : Migration
    {
        public override void Up() {
            Create.Table("Project")
                .WithColumn("id").AsInt64().PrimaryKey().Identity()
                .WithColumn("name").AsString(30).Nullable()
                .WithColumn("author").AsString(30).Nullable()
                .WithColumn("date").AsDate().Nullable()
                .WithColumn("description").AsString(1000).Nullable();

            Create.Table("Data")
                .WithColumn("id").AsInt64().PrimaryKey().Identity()
                .WithColumn("project_id").AsInt64().ForeignKey("Project", "id")
                .WithColumn("a").AsInt32().Nullable()
                .WithColumn("b").AsInt32().Nullable()
                .WithColumn("c").AsInt32().Nullable()
                .WithColumn("d").AsInt32().Nullable();
        }

        public override void Down() {
            Delete.Table("data");
            Delete.Table("project");
        }
    }

1 个答案:

答案 0 :(得分:1)

作为Down方法的一部分,您可以创建一些备份表,这些表与您要删除的表相同,但是使用时间戳进行了固定。例如:

Project_201407091059
Data_201407091059

然后,您可以将要删除的表中的所有数据复制到这些表中。