2017-08-21 43 views
0

我想使用EF6的代碼優先技術,但是當我對錶進行更改時,它會刪除數據庫並重新創建它,清除所有數據。 有什麼辦法可以阻止這種情況發生?在EF6中更新CodeFirst中的數據庫而不刪除數據

我的代碼:

Database.SetInitializer<EmployeeDb>(new DropCreateDatabaseIfModelChanges<EmployeeDb>()); 
+0

你也給出了答案。你的代碼說,如果你改變你的模型,它會下降並創建數據庫。 –

+0

我想知道是否有替代方案,我可以先使用代碼,但在更新表上不必重新創建數據庫。 –

+1

你可以使用Code First Migrations https://msdn.microsoft.com/en-us/library/jj591621(v=vs.113).aspx –

回答

0

這些都是在代碼中第一種方法爲數據庫動初始化策略:

  1. CreateDatabaseIfNotExists:這是默認初始值。顧名思義,如果每個配置都不存在,它將創建數據庫。但是,如果更改模型類,然後使用此初始化器運行應用程序,則會引發異常。
  2. DropCreateDatabaseIfModelChanges:如果模型類(實體類)已更改,此初始化程序將刪除現有數據庫並創建新數據庫。所以當模型類更改時,您不必擔心維護數據庫模式。
  3. DropCreateDatabaseAlways:顧名思義,這個初始化程序每次運行應用程序時都會刪除一個現有的數據庫,而不管你的模型類是否已經改變。當你想要新的數據庫時,每次運行應用程序時,這都會很有用,就像開發應用程序時一樣。
  4. 自定義數據庫初始化程序:如果上述任何一個不滿足您的要求,或者您想要使用上述初始化程序初始化數據庫,您也可以創建自己的自定義初始化程序。

Here,它可以給你一般的想法和如何使用這些方法之一。

由於您的意見CreateDatabaseIfNotExists可以幫助你。使用這種方法添加或刪除模型類時,您的db將會更新,您的數據將保持穩定。

Here你可以找到例子都Context構造和計算器config文件

Another topic about this

相關問題