开始在包管理器控制台中使用add-migration命令为我的模型生成迁移。我的问题是,上下方法。我假设down方法的目的是删除所有依赖项并删除表,如果它们已经在数据库中?还有up方法会在up方法之前执行吗? 然后up方法是反向的,创建/更新表/索引等?
有时当我使用它时,down方法会获得许多创建表然后被删除?最近它创建并删除了很多表,并且在up方法中几乎发生了同样的事情。为什么呢?
答案 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方法将执行相反的操作。它将您的数据库恢复到上一次迁移所需的状态