2015-10-20 21 views
0

我們通過在專用C#項目中生成所有遷移文件,在我們的MVC項目中使用帶有代碼優先遷移的EF 6。在從開發向功能分支的前向集成之後,我們突然遇到這樣的情況:在創建新的遷移時 - 使用軟件包管理器中的add-migration命令 - 我們會得到很多更改,儘管數據庫中的__MigrationHistory Table最新日期和我們沒有在模型中做出新的改變。什麼地方出了錯?腳手架確實在檢查變化嗎?任何想法如何找到EF爲什麼會產生我們早期的遷移文件中已有的變化?爲什麼實體框架確實在所有最新版本都生成新的遷移?

更新:的ConnectionString配置是正確的(像往常一樣)。我嘗試了以下方法:複製生產數據庫並使用最新的遷移更新生產數據庫。運行後update-database我收到消息:「此遷移文件的設計器代碼包含當前Code First模型的快照。此快照用於在您爲下一次遷移腳手架時計算對模型所做的更改。如果您對要在此遷移中包含的模型進行其他更改,則可以通過再次運行「添加遷移Test_homogeo」來重新搭建它。「所以我現在再次運行添加遷移,我得到一個包含我已經在數據庫和最新的4個遷移文件中擁有的表的遷移文件。不知怎的,我認爲最後一次遷移沒有奏效,但是我在__MigrationHistory和數據庫模式中有這些遷移。爲了找到問題,我不知道下一步該怎麼做。有什麼想法嗎?

+0

[爲什麼添加遷移有時會創建重複的遷移?](http://stackoverflow.com/questions/19136066/why-does-add-migration-sometimes-create-duplicate-migrations) –

回答

0

它檢查數據庫模式,您的遷移文件夾和_MigrationHistory表。你一定是錯過了某個地方的東西。嘗試檢查您的連接字符串。

1

我沒有發現問題,但我找到了解決方法。也許別人會有同樣的問題。刪除從所有代碼最多()和()最後一個「無用」 /」已經存在」遷移的方法。用更新數據庫更新數據庫。當再次添加新遷移時,將不會再檢測到「不需要的」/「已存在的」更改。作爲一種替代解決方案嘗試使用標誌-IgnoreChanges用命令添加遷移