29

开始在包管理器控制台中使用add-migration命令为我的模型生成迁移。我的问题是,上下方法。我假设down方法的目的是删除所有的依赖关系,如果它们已经在数据库中,就删除这些表。此外,down方法将在up方法之前执行? up方法是相反的,创建/更新表/索引等?C#代码 - 第一次迁移,上/下?

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

回答

53

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

20

只需添加到@Ladislav Mrnka。我需要使用向下()的第一次和我花了一些时间,使其工作,所以:

Update-Database -Target:201407242157114_46 

当我最后的迁移是47(其中加入新的东西)。 Here's a nice explanation如何回滚数据库并删除错误的迁移。

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