[英]Entity Framework asks to update-database when migration is already appended
首先在Azure,實體框架代碼上發布ASP.NET WebAPI應用。
發布具有在應用程序啟動時執行的遷移的發布后(第一張圖片),我無法添加新的遷移並使用數據庫上下文(“自創建數據庫以來,支持'DatabaseContext'上下文的模型已更改”例外)。 添加新遷移時,EF會因錯誤而中斷:
由於以下未完成的顯式遷移正在處理中,因此無法生成顯式遷移:[遷移名稱]。 在嘗試生成新的顯式遷移之前,請應用未決的顯式遷移。
似乎EF從__MigrationHistory表中看不到遷移。 我檢查了此表,並且存在上一次遷移。
在web.config中,只有一個連接字符串。
如果重要,則DatabaseContextWithoutCache繼承DatabaseContext(它們具有不同的DbConfigurationType)。
添加空初始值設定項之后Database.SetInitializer<DatabaseContext>(null);
到數據庫上下文可以正常工作,但我仍然無法添加任何遷移。
為什么Entity Framework看不到遷移已附加到數據庫? update-database
中斷,因為db中已經有表和列。
編輯:
在我的遷移列表中,有2個遷移。 我回滾到了init(第一次)遷移,然后刪除了。 然后進行add-migration(現在它包含來自第二和新更改的更改)並運行update-database
。 有用。
但是EF忽略了db是最新的,並且打破了“自創建數據庫以來,支持模型的'DatabaseContext'上下文已更改”的例外。
我不懂的天哪
我最近在VS 2013下遇到了這個問題。如果在程序包管理器控制台中運行命令add-migration {name}
(或者添加-startupprojectname {MyProjectName}
),則EF應該為您生成一個新的遷移文件。 如果該遷移文件包含任何內容,則它認為您不在應有的位置,然后應使用該新遷移來運行update-database
。
不幸的是,似乎確實有可能陷入這種循環(這發生在我身上),並且有很多與此相關的SO問答。 祝你好運解決它。
如錯誤所暗示,存在針對數據庫的掛起遷移。
使用軟件包管理器中的以下命令(用您自己的值替換值)
update-database -projectname yourprojectname -connectionstring "yourconnectionstring"
然后,創建新的遷移...。
add-migration yournewmigrationname -projectname yourprojectname -connectionstring "yourconnectionstring"
最后,運行新創建的遷移
update-database -projectname yourprojectname -connectionstring "yourconnectionstring"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.