我在 Web API Core 3.1 中使用 EFCore 創建了 DbContext(Scaffold-DbContext)。經過一些更改并在 SQL Server 中創建了新表。我想在 EFCore Web API Core 3.1 中更新新創建的表。如何更新所有創建的表?
我已經按照以下命令嘗試了很多次。但是要么所有表都重復,要么有時所有表名稱都發生變化,例如更改后的 TblUser (TblUsers)。為什么?
caffold-DbContext "Server=vaio;Database=Company;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
我試過如下
caffold-DbContext "Server=vaio;Database=Company;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
提前致謝
uj5u.com熱心網友回復:
我以前也有同樣的問題。所以 EF 都是以代碼為先的。沒有辦法通過腳手架更新你的模型。但是我還有其他方法可以解決這個問題。我打開第二個專案并在那里運行腳手架命令,如下所示:
Scaffold-DbContext "conection string here" Microsoft.EntityFrameworkCore.SqlServer -OutputDir "Your Dir" -Force -Tables tabeOne, tableTwo
通過這種方式,您可以在新專案中獲得所需的所有更改,然后從新專案中復制并替換主專案中的所有內容。
uj5u.com熱心網友回復:
efcore 不是為 db 首先設計的,從資料庫中對模型進行逆向工程,你不能只是再次運行腳手架命令,你應該手動更新模型或洗掉模型并重新運行腳手架,
基本上你必須添加 --Force 標志來用新的覆寫模型
從:
https://docs.microsoft.com/en-us/ef/core/managing-schemas/scaffolding?tabs=dotnet-core-cli
對資料庫進行更改后,您可能需要更新 EF Core 模型以反映這些更改。如果資料庫更改很簡單,那么手動更改 EF Core 模型可能是最簡單的。例如,重命名表或列、洗掉列或更新列的型別是在代碼中進行的微不足道的更改。
然而,更重要的更改并不容易手動進行。一種常見的作業流程是再次使用 -Force (PMC) 或 --force (CLI) 對資料庫中的模型進行逆向工程,以用更新的模型覆寫現有模型。
uj5u.com熱心網友回復:
最后我找到了一個先更新資料庫的解決方案 DbContext 我已經洗掉了舊的模型檔案夾,然后再次運行 Scaffold-Dbcontext 命令。它成功地從 Sql server 獲取所有表。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/456802.html
