我使用Entity Framework Code First開始了我的項目。當我準備好時,我將我的數據庫和代碼上傳到我的主機提供商。一切正常。MVC3和代碼優先遷移 - 「自從創建數據庫以來,支持'blah'上下文的模型已經發生了變化」
我需要添加一個新的字段給我的一個類,我不想丟失數據庫中的數據。因此,我嘗試了一些關於使用Code First Migrations的博客文章。我做了以下:
- 我備份了我的遠程(生產)數據庫。
- 我重視這個數據庫在本地
- 我加入了財產上我的課
- PM>啓用的遷移
- PM>添加遷移AddSortOrderToCar
- PM>更新,數據庫
- 在這一點上我創建本地數據庫的.bak文件,然後使用該文件'恢復'到遠程文件。
- 最後,我將代碼發佈到遠程站點。
當我訪問該網站時,我收到以下錯誤消息: 自創建數據庫以來,支持'blahblah'上下文的模型已更改。考慮使用Code First Migrations來更新數據庫。
我在做什麼錯?
「更新,數據庫-Script」工作。我會認爲'更新數據庫'命令會做同樣的事情(但不生成腳本)。無論如何。謝謝! – 2012-04-22 17:44:16
@ScottDietrich - np - 它應該,但是你必須保持所有方面的同步(並且例如根據本地數據庫的「狀態」生成遷移等),所以遷移是爲了適合你的'本地'數據庫與代碼 - 一旦你開始「移出東西」,那麼你做錯事的機會就會增加)。總而言之,SQL腳本證明是更安全的方式,你可以看到 - 除非你在服務器上也有開發者設置(爲了能夠在那裏運行遷移) – NSGaga 2012-04-22 17:51:25
我有一個DB,其中一些遷移有運行,但__MigrationHistory表中的記錄不會阻止那些嘗試再次運行的相同遷移。我最終刪除了__MigrationHistory表中的所有行,然後手動插入由-Script命令生成的INSERT INTO [__MigrationHistory]行。遷移歷史現在再次排列。感謝您提供非常有用的答案@NSGaga! – 2015-01-07 11:32:47