2014-05-16 43 views
0

使用EF Code創建數據庫首先,我很好奇記錄保留在我添加到數據庫中的時間多久?當停止調試器時,記錄仍然存在,所以它不像它們只在程序運行時才存在。使用EF Code First創建的數據庫的生存期

但說我現在創建10000條記錄。我是否可以依賴數據庫不被刪除或其記錄關掉電腦?或者數據庫事實上會留下,因爲我離開了它?那麼假設我已連接到數據庫,那麼從我的程序執行的任何未來操作只會改變現有數據庫及其所有記錄?

我只是對數據庫的生命週期的範圍感到困惑,我正在考慮添加大量數據。

+1

如果您已經將其連接到SQL Server數據庫,那麼數據應該是持久的。 –

+0

通常RDBMS'保證耐久性:如果你保存了數據和提交的事務 - 數據保持不變。直到您刪除數據。 –

+1

數據庫的生存期取決於存儲數據庫的磁盤的生命週期。如果您想要保留比這更長的數據,您應該確定擁有強大的備份計劃。 – phoog

回答

2

這取決於您的代碼優先代碼中包含的數據庫初始化策略的具體內容

舉例來說,如果你有它設置爲DropCreateDatabaseIfModelChanges並通過添加或刪除屬性,然後運行該項目改變你的C#代碼模型,它將DROP數據庫,本質刪除所有記錄您在所有的表,並用新模式重新創建一個空數據庫。

如果你不想失去你添加數據,您應該編程通過重寫Seed()方法添加數據,或者創建一個的Visual Studio數據庫項目,並導入架構和數據集成到它。在更新數據庫模型時,第一種數據種子清理方式更易維護。

以下是其他Code-First的數據庫初始化策略

  1. CreateDatabaseIfNotExists:這是默認初始值設定項。顧名思義,如果不存在每個配置,它將創建數據庫。但是,如果更改模型類,然後使用此初始化程序運行應用程序,則會引發異常。

  2. DropCreateDatabaseIfModelChanges:如果模型類(實體類)已更改,此初始化程序將刪除現有數據庫並創建新數據庫。所以當模型類更改時,您不必擔心維護數據庫模式。

  3. DropCreateDatabaseAlways正如名稱所示,無論您的模型類是否已更改,此初始化程序在您每次運行應用程序時都會丟棄現有的數據庫。當您每次在開發過程中運行應用程序時都需要新數據庫時,這會很有用。

  4. 自定義數據庫初始值設定程序:如果上述任何一項不滿足您的要求,或者您想在使用上述初始化程序初始化數據庫時執行其他操作,也可以創建自定義初始值設定項。

來源:entityframeworktutorial.net/Database Initialization Strategies in Code-First

相關問題