0

我们正在使用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");
        }
    }
4

1 回答 1

1

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

Project_201407091059
Data_201407091059

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

于 2014-07-09T10:00:07.033 回答