我有一個下載的生產數據庫,其中有一個空MigrationHistory表(內容被意外刪除)。使用空MigrationHistory表從現有生產數據庫遷移實體框架
我在我的開發環境中有一個更新的代碼模型(沒有先前的遷移)。
換句話說,下載的生產數據庫模式和開發環境代碼模型之間存在不匹配 - 並且它們之間沒有歷史記錄。
如何搭建代碼優先的遷移(或獲取SQL)以將生產數據庫更新爲新模型?
我曾嘗試以下,按照建議here:
- 在我的項目啓用遷移(
Enable-Migrations
) - 添加一個空遷移(
Add-Migration InitialCreate -IgnoreChanges
) - 運用這一遷移(
Update-Database
)
這會導致一行被添加到MigrationHistory表中。
但是,EF似乎認爲這意味着當前的代碼模型與數據庫模式相匹配(當然,這並不是)。
如果我嘗試添加新的遷移(Add-Migration UpdatedModel
),則此遷移將變爲空白,因爲代碼模型和數據庫不匹配,所以不應該這樣遷移。
如何獲得反映代碼模型與數據庫模式之間更改的代碼優先遷移(或SQL)? (如果我試着做Add-Migration InitialCreate
而沒有-IgnoreChanges
標誌,我得到的是從頭開始創建的整個數據庫,正確地反映了代碼模型,但我希望進行更改。)
您可以從源代碼控制中獲得您的代碼的舊版本,其中模型與當前生產數據庫匹配嗎?如果你不能玩MigrationHistory表,那麼'Model'列就是一個實際的EDMX文件,它已經被gzip然後Base64編碼。雖然不好玩! – DavidG