36

我正在使用實體框架和實體框架遷移來實現使用代碼優先和自動遷移的解決方案。實體框架遷移停止檢測POCO更新

它曾經很好但突然停止檢測我對POCO所做的更新。現在,當我添加一個新的屬性(很簡單的屬性,如年齡或電子郵件),並執行Update-Database,沒有任何反應,它給我:

指定「-Verbose」標誌來查看SQL命令時正在執行移民。
找到0,等待顯式遷移:[]。
添加種子數據(如果在遷移設置類中覆蓋了Seed方法)。

沒有更新!

有沒有人知道爲什麼會發生這種情況?

+1

AutomaticMigrationsEnabled標誌是否仍然設置? – Betty

+0

如果您運行Add-Migration,它是否檢測到更改? – Betty

+0

自動遷移設置爲True,我沒有檢查添加遷移,但現在我不得不卸載實體框架遷移,並再次安裝它來解決它,現在它的工作如此現在我不能告訴,但如果它發生了再次我會檢查添加遷移 – Stacker

回答

2

這可能是兩方面的原因:

  1. 有一些其他的DbContext代碼,這就是爲什麼自動遷移不能決定,要使用的上下文。
  2. 有一些新的變化,循環模式和代碼模型的比較,所以EF根本找不到差異。

一般來說,自動遷移實施起來很簡單快捷,但是使用它們並不安全。在某個階段,這種遷移可能會失敗。

幾年前,我開發了基於Linq2SQL的小型ORM,AcroDB Library,它使用的是SubSonic的自動化。與EF遷移現在可以完成的幾乎相同。對於小型項目和少量數據處理或更改來說,它是完美的,但是當項目已經發展到15個以上的表格時,它變成了一場噩夢。這就是爲什麼MS最近宣佈Code-driven migrations。他們更安全,更好的項目。此外,你可以看看Migrator.Net(這次比EF好一點)。