2013-09-16 50 views
5

我正在成功運行Entity framework 6.0.0-alpha3直到今天。今天,我決定更新到Entity framework 6.0.0-rc1,並指定here爲了運行我的遷移,我需要刪除ef alpha1-alpha3所做的所有以前的遷移並重新制作它們。實體框架遷移未檢測到任何更改

因爲我所有的遷移都是由alpha3完成的,所以我決定放棄所有遷移(包括_MigrationHistory表),並重新啓用它。

我創建初始遷移與add-migration Initial -IgnoreChanges(其具有空Up()Down()方法),然後我執行update-database,我想,一切正常。那麼,它不是。當我將新類添加到我的模型時,add-migration first會創建空的Up()Down()方法。

另外,以前,當我想要訪問尚未註冊遷移的對象時,我收到一條錯誤消息,說我需要更新遷移。現在,當我嘗試訪問新對象時,它只是說"Invalid object name 'dbo.Notifications'."

現在我該怎麼辦?

回答

6

EF使用數據庫模型(與遷移一起保存)的快照來確定當前版本的數據庫模型和上次遷移之間的更改。

add-migration Initial -IgnoreChanges命令使用數據庫模型的快照創建遷移,但它會忽略來自以前數據庫快照(即空數據庫)的任何更改,因爲您告訴要這樣做。

命令查看先前的遷移(即初始),並將當前數據庫模型快照與Initial遷移的快照進行比較。顯然這些快照是相同的,所以Up()Down()方法是空的。

我覺得你的問題的解決方案是產生在初始遷移的所有變化

add-migration Initial

1

我遇到地方實體不認識我的變化的問題,即使我添加了一個全新的實體類到裝配它仍然不會看到它。

我剛剛恢復遷移時,我記得一切正常,在遷移後刪除所有遷移文件,並再次運行Add-Migration。最後,所有綜合變化都顯現出來了。

+0

只是爲了補充一點,我再次遇到了這個問題,這一次解決它的唯一辦法是做一個「批量生成」(帶重建)。它在我相信的調試菜單下。請注意,這與重建地點不同,因爲這對我無效。 – parliament

0

我也有空的向上/向下,原因是EF不喜歡我的模型具有[JsonProperty]高於他們的屬性,因爲我使用相同的模型爲json數據源以及。

+0

你確定嗎?從未注意到對此屬性的任何干擾。請顯示屬性何時出現問題的詳細信息。 –