ASP.NET WebAPI應用程序首先在Azure上發佈實體框架代碼。當已經添加遷移時,實體框架會要求更新數據庫
在使用在應用程序啓動時執行的遷移(第一張圖片)發佈後,我無法添加新的遷移並使用數據庫上下文(「支持創建數據庫後'DatabaseContext'上下文已更改的模型」異常)。在添加新的遷移EF斷裂,出現錯誤:
Unable to generate an explicit migration because the following explicit migrations are pending: [migration name]. Apply the pending explicit migrations before attempting to generate a new explicit migration.
看起來像EF好好嘗試一下看到__MigrationHistory表遷移。我檢查了這張表,最後一次遷移存在。
在web.config中只有一個連接字符串。
如果它是重要的,DatabaseContextWithoutCache繼承DatabaseContext(他們有不同的DbConfigurationType)。
在將null初始化程序Database.SetInitializer<DatabaseContext>(null);
添加到數據庫上下文後,它可以工作,但我仍然無法添加任何遷移。
爲什麼實體框架沒有看到遷移已經附加到數據庫? update-database
中斷,因爲db中已經有表和列。
編輯:
在我的遷移列表2個遷移。我回滾到init(第一次)遷移並刪除第二個。然後添加遷移(現在它包含來自第二次和新更改的更改)並運行update-database
。有用。
但EF忽略db是先進的日期和斷裂,出現異常「的模式支持了‘DatabaseContext’背景下,因爲創建數據庫時發生了變化」。
OMG我不明白
如果你不關心過去的遷移,撕都記錄下來(從代碼中刪除表__MigrationHistory和遷移。現在啓用的遷移,然後創建一個新的基線:add-migration -BaselineName -IgnoreChanges後跟更新數據庫。 –
@SteveGreene我做到了。前2次遷移沒問題,但第3次制動。 –