簡體   English   中英

EF遷移沒有待處理的更改,但仍然抱怨有待更改。 EF如何跟蹤這一點?

[英]There are no pending changes for EF migration and still it complains that there are pending changes. How does EF keep track of this?

我的項目中有幾個遷移文件,因為我對上次遷移進行了手動修改,所以我不想使用“包管理器控制台”重新生成它。 我只需要添加1列。 所以手動添加了以前的遷移(我可以這樣做,因為還沒有人升級)。

現在,當我啟動我的項目時,本地數據庫似乎創建了我的新列,但我確實得到了一個例外:“無法更新數據庫以匹配當前模型,因為存在掛起的更改並且禁用了自動遷移”

看起來我能解決這個問題的唯一方法是生成一個額外的遷移 - 盡管這個migation生成的代碼行完全與我在之前的遷移中手動編寫的代碼相同...

我想知道 - EF如何跟蹤這個並且有沒有辦法繞過它?

還有一個問題 - 我想要限制我擁有的遷移文件數量是不對的? 我目前認為在理想的情況下,我的軟件的每個版本最多只能有1個遷移文件,以便更好地概述我的代碼......

謝謝,

EF將序列化模型的哈希值保存在_MigrationHistory表中,並在使用遷移時對它們進行比較,以確保數據庫模式與模型匹配。 我不建議試圖繞過這個。 如果您希望最大限度地減少文件數量,則可以回滾然后組合遷移。 但我不認為這是值得的。 我只是定期將我的遷移放入子文件夾中

我推薦這篇文章:

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/

檢查數據庫中名為_MigrationHistory的表。 這將包含您運行的遷移歷史記錄。

我認為單一遷移不是一個好主意。 因為:

  • 每次遷移都像數據庫的一個版本 您可以通過執行“update-database -target migration MigrationName”返回任何版本。

  • 如果很多人正在研究這個項目,那么跟蹤你的數據庫所處的版本就會變得非常困難,而且會變得混亂。

如果要添加額外的列,可以強制執行以前的遷移。 否則,最好進行多次遷移以避免混淆。

暫無
暫無

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

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