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

问题描述 投票:39回答:3

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

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

c# entity-framework code-first ef-migrations
3个回答
68
投票

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


25
投票

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

Update-Database -Target:201407242157114_46

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.