簡體   English   中英

實體框架要求在已附加遷移的情況下更新數據庫

[英]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.

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