![](/img/trans.png)
[英]How to generate empty migration in EF Core code-first while ignoring pending changes?
[英]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.