使用EF Code First创建的数据库的生命周期

时间:2014-05-16 22:18:59

标签: c# .net sql-server database entity-framework

使用EF Code First创建了一个数据库,我很好奇这些记录在我添加到数据库中的时间有多长?当停止调试器时,记录仍然存在,因此它们不仅仅在程序运行时存在。

但是我说我现在创造了10000条记录。我可以依赖数据库不被删除或其记录关掉电脑?或者数据库实际上会在我离开时保留吗?那么假设我已连接到数据库,从我的程序执行的任何未来操作只会改变现有数据库及其所有记录?

我只是对数据库生命周期的范围感到困惑,我正在考虑添加大量数据。

1 个答案:

答案 0 :(得分:2)

它取决于 您的代码优先代码中的数据库初始化策略。

例如,如果您将其设置为DropCreateDatabaseIfModelChanges并通过添加或删除属性更改C#代码中的模型然后运行项目,它将DROP数据库删除所有表中的所有记录,并使用新架构重新创建一个空数据库。

如果您不想丢失所添加的数据,则应该通过覆盖Seed()方法或创建 Visual Studio数据库项目以编程方式添加数据,以及将架构和数据导入其中。当您对数据库模型进行更新时,第一种播种数据的方法更清晰,更易于维护。

以下是Code-First中的其他数据库初始化策略

  1. CreateDatabaseIfNotExists:这是默认初始值设定项。顾名思义,如果不存在,它将根据配置创建数据库。但是,如果更改模型类,然后使用此初始化程序运行应用程序,则会抛出异常。

  2. DropCreateDatabaseIfModelChanges:如果您的模型类(实体类)已更改,此初始化程序将删除现有数据库并创建新数据库。因此,当模型类发生更改时,您不必担心维护数据库架构。

  3. DropCreateDatabaseAlways:顾名思义,无论您的模型类是否已更改,此初始化程序每次运行应用程序时都会删除现有数据库。当您在开发时每次运行应用程序时都需要新数据库时,这将非常有用。

  4. 自定义数据库初始化程序:如果以上任何一项不满足您的要求,或者您希望在使用上述初始化程序初始化数据库时执行其他一些过程,也可以创建自己的自定义初始化程序。

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