2014-05-12 74 views
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"); 
     } 
    } 

回答

1

作为你的一部分Down方法,你可以创建其等同于要删除的表,但后固定时间戳一些备份的表。例如:

Project_201407091059 
Data_201407091059 

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