2015-01-10 95 views
1

我使用Code First Migrations,自动模式。我为一次需要直接SQL代码的迁移创建了Migrations文件夹,但AutomaticMigrationsEnabled = true;如何清除Code First迁移中的历史记录?

public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
     AutomaticMigrationDataLossAllowed = true; 
    } 

很多次,我删除数据库以重新创建它。看到调试器中的自动更新SQL代码,我意识到迁移系统有我的更改历史,事件我删除源中的任何跟踪。

例如,我将MyTable1表名更改为MyTable2。然后我完全删除数据库。当我执行“Update-Database -Script”时,我可以看到Migrations仍然创建“MyTable1”,然后重命名为“MyTable2”。

我完全困惑。 “MyTable1”在我的代码中不存在。它不在Migrations文件夹中,因为我使用自动迁移。它不在我的数据库的历史记录表中,因为我删除了它。我删除了bin和obj文件夹。那么,在哪里存储我的更改历史记录?

+0

make manual add-migration info,并清除Up和Down方法并运行update-database – Monah

回答

0

神秘解决了。我的迁移文件绑定了一个RESX文件。

该文件似乎将数据库的以前的状态存储在“data”元素中。它被编码,因此,我无法在我的文件中找到MyTable1文本。

<data name="Target" xml:space="preserve"> 
<value>H4sIAAAAAAAEAO1dW28cu5F+X2D/w0BPSXCikez12cSQE+jI0okSyxYs+WSRF6M1Q0kN93RPunt8LCz2l+3D/qT9C8u+81LFW7Mv4xUOcGANySJZLBaLxaqv//e//+fkz9820eIrSbMwid8cHB8eHSxIvErWYfzw5mCX3//+Dwd//tO//svJ+XrzbfFLU+9lUY+2jLM3B495vn29XGarR7IJssNNuEqTLLnPD1fJZhmsk+WLo6M/Lo+Pl4SSOKC0FouTj7s4