我们在一个项目中使用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");
}
}
答案 0 :(得分:1)
作为Down
方法的一部分,您可以创建一些备份表,这些表与您要删除的表相同,但是使用时间戳进行了固定。例如:
Project_201407091059
Data_201407091059
然后,您可以将要删除的表中的所有数据复制到这些表中。