對於使用EF核心與ASP.NET核心V1.0.0那些我有一個類似的問題,用下面的命令來糾正它(@ DavidSopko的帖子我指出了正確的方向,但在細節上略有不同對於EF核心):
Update-Database <Name of last good migration>
Remove-Migration
例如,在我目前的發展命令成爲
PM> Update-Database CreateInitialDatabase
Done.
PM> Remove-Migration
Done.
PM>
的刪除遷移將刪除上次遷移喲你應用。如果你有一個更復雜的情況下需要移除多個遷移(我只有2個,最初和最後一個),我建議你測試一個虛擬項目中的步驟。
EF Core(v1.0.0)目前似乎沒有Get-Migrations命令,因此您必須查看您的migrations文件夾並熟悉所做的操作。然而,有一個很好的幫助命令:
PM> get-help entityframework
在VS2015的SQL Server對象資源管理器刷新dastabase,我所有的數據被保留下來,而且我想恢復已經走了:)
起初我試圖遷移刪除遷移本身並發現錯誤命令令人困惑:
System.InvalidOperationException:遷移'...'已應用於數據庫的 。取消應用並重試。如果遷移 已應用於其他數據庫,請考慮使用新的遷移恢復其更改 。
已經有改善這一措詞的建議,但我想的錯誤說這樣的事情:
運行update-數據庫(最後一個良好的遷移名)恢復數據庫架構回到那個狀態。此命令將 未應用遷移指定爲 更新數據庫後發生的所有遷移。然後,您可以運行刪除遷移(遷移名稱以去除)從EF核心help命令
輸出如下:
PM> get-help entityframework
_/\__
---==/ \\
___ ___ |. \|\
| __|| __| | ) \\\
| _| | _| \_/ | //|\\
|___||_| / \\\/\\
TOPIC
about_EntityFrameworkCore
SHORT DESCRIPTION
Provides information about Entity Framework Core commands.
LONG DESCRIPTION
This topic describes the Entity Framework Core commands. See https://docs.efproject.net for information on Entity Framework Core.
The following Entity Framework cmdlets are included.
Cmdlet Description
-------------------------- ---------------------------------------------------
Add-Migration Adds a new migration.
Remove-Migration Removes the last migration.
Scaffold-DbContext Scaffolds a DbContext and entity type classes for a specified database.
Script-Migration Generates a SQL script from migrations.
Update-Database Updates the database to a specified migration.
Use-DbContext Sets the default DbContext to use.
SEE ALSO
Add-Migration
Remove-Migration
Scaffold-DbContext
Script-Migration
Update-Database
Use-DbContext
綠巨人粉碎選項不起作用。我還沒有將錯誤的遷移應用到數據庫。我試過了,但它不起作用,因爲我在原始問題中指定了表名。我不喜歡第一個選項,因爲它看起來像我將不得不更改遷移代碼。如果我做得不好,我可以把它打破。 –
如果您尚未應用錯誤遷移,則無法阻止您刪除它並重新進行腳本遷移或更正已損壞的遷移。 –
「綠巨人粉碎」就是答案,它在開發時適用於我,並且我想爲我錯過的遷移添加一些東西。我認爲它不適用於Martin的原因是無關的(或者可能與手動更改數據庫模式有關) – rethenhouser2