在C#中回滚实体框架迁移

时间:2016-07-05 23:56:16

标签: c# entity-framework rollback ef-migrations

现在我有一个使用Entity Framework与数据库交互的服务。启动时,它使用MigrateDatabaseToLatestVersion<Context, Configuration>初始化数据库,并且运行良好。

情况是这样的,我们想要达到我们有活动/暂存环境的地步,但有一个例外:两者都与同一个数据库通信(我不能控制它)。

所以,现在,当我部署到暂存时,我将服务部署为关闭。当我们使用生产切换分段时,我关闭生产服务,启动分段服务,并根据需要向前迁移数据库。这很好用,我们在多个预制环境中这样做。如果出现问题(只发生一次),我们必须手动运行Update-Database '[previous migration name]',然后将所有内容切换回以前的服务器。

我希望以与向前迁移相同的方式自动向后迁移。也就是说,如果服务启动并且看到其架构落后于1个版本,并且最近的迁移发生在最近的x天内,它将自动回滚架构并接受任何数据丢失。

我只是不确定该怎么做。

1 个答案:

答案 0 :(得分:3)

您可以使用DbMigrator课程完成此操作。您可以在迁移代码开始运行之前查看__MigrationHistory表,以查看要回滚的迁移。 Use DbMigrator.Update(string)指定要“更新”的特定迁移(由于您指定了以前的迁移,您将回滚)。