簡體   English   中英

EF Core 3.1:刪除了所有遷移和數據庫,如何在新數據庫中重新創建所有表?

[英]EF Core 3.1: Deleted all Migrations and the Database, how to recreate all tables in a new database?

我刪除了遷移文件夾中的所有遷移,還刪除了 SQL Server 中的數據庫。 我知道 - 現在 - 這些不應該完成,但我需要重新創建數據庫結構以保留應用程序。 我嘗試了“添加遷移初始”,但它只是生成一個空的遷移文件和一個快照文件。 如果我嘗試“刪除遷移”,那么它會抱怨一些丟失的遷移文件。

有沒有像我剛剛創建 DBContext 一樣“重置”快照,所以它會創建當前 DbSet 定義中的所有表?

我認為以下解決方案可以幫助您:

首先,確保數據庫被完全刪除,因為你說數據庫是在SQL中刪除的。 (創建第一個遷移后,會創建一個名為 __EFMigrationsHistory 的表,其中存儲遷移記錄,如果數據庫沒有完全刪除,則必須刪除此表)。

其次,完全刪除 Migrations 文件夾。

第三步,運行以下命令。

Enable-Migrations -EnableAutomaticMigrations -Force

在最后一步,運行以下命令

Add-Migration Initial

腳步 :

  1. 刪除狀態:刪除項目中的遷移文件夾

  2. 刪除數據庫中的 __MigrationHistory 表(可能在系統表下)

在包管理器控制台中運行以下命令:

Enable-Migrations -EnableAutomaticMigrations -Force

使用或不使用 -EnableAutomaticMigrations

最后,您可以運行:

Add-Migration Initial

這兩個鏈接也可以幫助您:

重置實體框架遷移

https://weblog.west-wind.com/posts/2016/jan/13/resetting-entity-framework-migrations-to-a-clean-slate

看來問題出在我的項目中! 正如@CodingMytra 在評論中指出的那樣,我的項目中有一個對舊數據庫的積極引用。 由於某種原因,它沒有重建也沒有更新,因此沒有反映模型/dbcontext 中的更改。 我創建了一個新的空項目,導入了所有源文件,生成了“初始”遷移並成功更新了數據庫。

感謝所有回復!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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