编程语言
首页 > 编程语言> > 在C#中回滚实体框架迁移

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

作者:互联网

现在,我有一个使用实体框架与数据库交互的服务.启动时,它将使用MigrateDatabaseToLatestVersion<上下文,配置>初始化数据库.而且效果很好.

这种情况使得我们想要达到一个拥有活动/登台环境的地步,只有一个例外:两者都与同一个DB通信(我对此没有控制权).

因此,现在,当我部署到暂存时,我将服务部署为关闭状态.当我们在生产中切换暂存时,我关闭了生产服务,启动了暂存服务,并根据需要将数据库向前迁移.这很好,我们可以在多个预生产环境中执行此操作.如果有问题(仅发生一次),我们必须手动运行Update-Database'[先前的迁移名称]’,然后将所有内容切换回先前的服务器.

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

我只是不确定如何去做.

解决方法:

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

标签:ef-migrations,rollback,c,entity-framework
来源: https://codeday.me/bug/20191118/2028241.html