56

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

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

4

3 回答 3

95

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

于 2012-03-19T11:54:18.223 回答
31

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

Update-Database -Target:201407242157114_46

我上次迁移的地方是 47 (添加了新东西)。这是关于如何回滚数据库和删除错误迁移的一个很好的解释。

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

于 2014-07-26T16:38:28.880 回答
2

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

于 2019-04-23T10:36:04.270 回答