C#Code-First迁移,上/下?

时间:2012-03-19 11:42:13

标签: c# entity-framework code-first ef-migrations

开始在包管理器控制台中使用add-migration命令为我的模型生成迁移。我的问题是,上下方法。我假设down方法的目的是删除所有依赖项并删除表,如果它们已经在数据库中?还有up方法会在up方法之前执行吗? 然后up方法是反向的,创建/更新表/索引等?

有时当我使用它时,down方法会获得许多创建表然后被删除?最近它创建并删除了很多表,并且在up方法中几乎发生了同样的事情。为什么呢?

3 个答案:

答案 0 :(得分:68)

Up方法将数据库从当前状态(由先前的迁移表示)升级到当前代码迁移所期望的状态。 Down方法执行相反的操作 - 它从当前迁移中删除所有更改,并将数据库恢复到上一次迁移所需的状态。这就像安装/卸载迁移一样。当您致电update-database时,只会执行其中一种方法。要使用Down方法,您必须明确指定升级的目标迁移。如果目标迁移是旧迁移,迁移API将自动使用Down方法并降级您的数据库。

答案 1 :(得分:24)

加入@Ladislav Mrnka。我需要第一次使用Down()并花了一些时间让它工作,所以:

Update-Database -Target:201407242157114_46

我上一次迁移的位置是47(添加了新内容)。 Here's a nice explanation如何回滚数据库并删除错误的迁移。

希望它可以帮助其他魔术师学徒:)

答案 2 :(得分:0)

在这里, Up方法会将数据库从当前状态升级到您期望的新状态。 Down方法将执行相反的操作。它将您的数据库恢复到上一次迁移所需的状态