簡體   English   中英

使用EF Code First創建的數據庫的生命周期

[英]Lifetime of database created using EF Code First

使用EF Code First創建了一個數據庫,我很好奇這些記錄在我添加到數據庫中的時間有多長? 當停止調試器時,記錄仍然存在,因此它們不僅僅在程序運行時存在。

但是說我現在創建了10000條記錄。 我可以在關閉計算機時依賴數據庫不被刪除或其記錄嗎? 或者數據庫實際上會在我離開時保留嗎? 然后假設我已連接到數據庫,從我的程序執行的任何未來操作將只改變現有數據庫及其所有記錄?

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

它取決於您的Code-First代碼中的數據庫初始化策略。

舉例來說,如果你有它設置為DropCreateDatabaseIfModelChanges並通過添加或刪除屬性,然后運行該項目改變你的C#代碼模型,它將DROP數據庫, 基本上是刪除所有你所記錄的所有表 ,並重新創建使用新架構的空數據庫。

如果您不想丟失所添加的數據,則應通過重寫Seed()方法或創建Visual Studio數據庫項目以編程方式添加數據,並將模式和數據導入其中。 當您對數據庫模型進行更新時,第一種播種數據的方法更清晰,更易於維護。

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

  1. CreateDatabaseIfNotExists :這是默認的初始化程序。 顧名思義,如果不存在,它將根據配置創建數據庫。 但是,如果更改模型類,然后使用此初始化程序運行應用程序,則會拋出異常。

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

  3. DropCreateDatabaseAlways :顧名思義,無論您的模型類是否已更改,此初始化程序每次運行應用程序時都會刪除現有數據庫。 當您在開發時每次運行應用程序時都需要新數據庫時,這將非常有用。

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

來源: entityframeworktutorial.net / Code-First中的數據庫初始化策略

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM