C# 代码优先迁移,向上/向下?

Posted

技术标签:

【中文标题】C# 代码优先迁移,向上/向下?【英文标题】:C# Code-First migration, up/down? 【发布时间】:2012-04-03 21:35:34 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

当我们使用 EnableAutomaticMigrations 选项时,它是不是 up/down 的替代方法?【参考方案2】:

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

Update-Database -Target:201407242157114_46

我上次迁移的地方是 47(添加了新东西的地方)。 Here's a nice explanation 如何回滚数据库并删除错误迁移。

希望对其他魔法师学徒有所帮助:)

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于C# 代码优先迁移,向上/向下?的主要内容,如果未能解决你的问题,请参考以下文章

代码优先迁移 - 如何回滚第一次迁移

实体框架 - 迁移 - 代码优先 - 每次迁移播种

实体框架代码优先 - 初始代码迁移不起作用

实体框架代码优先迁移 - 我可以针对以前的迁移

实体框架代码优先:迁移失败并更新数据库,强制不必要的(?)添加迁移

骑士。 EF 代码优先迁移