2017-10-19 170 views
0

我們有一個ASP.NET Core MVC應用程序,其中包含Entity Framework Core。我們在現有的DevelopmentStagingProduction環境中添加了自定義的Testing環境。現在,我們希望應用程序在每次應用程序在這個新的測試環境中啓動時刪除並重新創建(或至少截斷)數據庫。EF Core:服務器重新啓動時刪除並重新創建數據庫

有沒有一種自動化的方式如何實現這種行爲?或者我必須在數據庫上下文中的每個DbSet上手動撥打RemoveAll

回答

2

呼叫dbContext.Database.EnsureDeleted();

確保了上下文中的數據庫不存在。如果它不存在 ,則不採取任何操作。如果確實存在,則刪除數據庫 。

警告:整個數據庫都會被刪除,並且不會努力刪除 模型僅用於該上下文的數據庫對象。

然後致電dbContext.Database.Migrate()創建新的(空的)數據庫並遷移到最新版本。

+1

順便說一句,在內部有「DROP DATABASE」邏輯的生產代碼看起來非常「危險」,甚至由某些config/start參數激活。一旦您將此操作回購,您將開始倒計時生產數據庫丟失(由於人爲錯誤)。相反,在使用測試配置凝視您的應用之前,請從單獨的腳本中刪除數據庫 – Dmitry