我遵循代碼優先方法通過EFCore生成我的數據庫。 現在在開發過程中,我的一個模型發生了變化。我怎樣才能在我們的客戶的實時系統上更新相應的數據庫表?當然,我不想轉儲或刪除任何數據。.NET核心數據庫模型在生產中的變化
我還在.NET Core 1.1.0上。
我遵循代碼優先方法通過EFCore生成我的數據庫。 現在在開發過程中,我的一個模型發生了變化。我怎樣才能在我們的客戶的實時系統上更新相應的數據庫表?當然,我不想轉儲或刪除任何數據。.NET核心數據庫模型在生產中的變化
我還在.NET Core 1.1.0上。
我擔心你會不得不吞下藥片。
Database.EnsureCreated()
僅用於開發,您不必保存數據。如果必須保留數據或更改表模式,則必須使用遷移或數據庫腳手架(從數據庫模式創建模型)。
無論如何,在應用/嘗試執行以下步驟並在臨時服務器上預先嚐試之前,請對生產數據進行備份。
一個棘手的選擇是......
Add-Migration InitialVersion
或dotnet ef migrations add InitialVersion
之後Update-Database
或dotnet ef database update
Add-Migration ModelUpdateV2
或(感謝@Smit!)或dotnet ef migrations script
。
尋找一個__EFMigrationHistory
表你的開發數據庫數據庫內:你有兩種選擇,這將產生用於應用對架構更改
從現在的SQL命令。它應該包含一個包含您的初始遷移名稱的條目。將此表導出到您的生產系統中。然後,應用程序應該將下一次啓動應用遷移(當您在Startup.cs中調用context.Database.MigrateAsync()
時)。
從現在起,你應該可以使用遷移在未來
只是從上面執行遷移腳本,而不復制過__EFMigrationHistory
,但隨後你必須重複上述步驟。
另一種選擇是,始終從數據庫中創建的模型(見dotnet ef dbcontext scaffold
命令(見EF Core Docs)就在未來創建數據庫架構模型。
,則每次更改表,你要創建自己的SQL遷移之前或同時部署應用程序應用之。
非常感謝!非常有幫助! – marrrschine
獲得腳本的等效powershell是'Scri PT-Migration' – Smit
您使用的遷移?或者'Database.EnsureCreated()'? – Tseng
Database.EnsureCreated() – marrrschine