簡體   English   中英

在C#中回滾實體框架遷移

[英]Roll back Entity Framework migrations in C#

現在我有一個使用Entity Framework與數據庫交互的服務。 啟動時,它使用MigrateDatabaseToLatestVersion<Context, Configuration>初始化數據庫,它運行良好。

這種情況是這樣的,我們想要達到一個我們有活動/暫存環境的地步,只有一個例外:它們都與同一個數據庫通信(我無法控制它)。

所以,現在,當我部署到暫存時,我將服務部署為關閉。 當我們使用生產切換分段時,我關閉生產服務,啟動分段服務,並根據需要向前遷移數據庫。 這很好用,我們在多個預制環境中這樣做。 如果出現問題(僅發生一次),我們必須手動運行Update-Database '[previous migration name]' ,然后將所有內容切換回上一個服務器。

我想以與向前遷移相同的方式自動向后遷移。 也就是說,如果服務啟動並且看到其架構落后於1個版本,並且最近的遷移發生在最近的x天內,它將自動回滾架構並接受任何數據丟失。

我只是不確定該怎么做。

您可以使用DbMigrator類完成此操作 您可以在遷移代碼開始運行之前查看__MigrationHistory表,以查看要回滾的遷移。 使用DbMigrator.Update(字符串)指定要“更新”的特定遷移(由於您指定了先前的遷移,因此將回滾)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM