在EF6中从CodeFirst更新数据库而不消除数据

时间:2017-08-21 09:50:30

标签: c# entity-framework ef-code-first entity-framework-6

我想使用EF6的Code First Technique,但是当我对表进行更改时,它会丢弃数据库并重新创建它,消除所有数据。 有没有办法阻止这种情况发生?

我的代码:

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

1 个答案:

答案 0 :(得分:1)

这些是在代码优先方法中启动数据库的策略:

  1. CreateDatabaseIfNotExists:这是默认初始值设定项。顾名思义,如果根据配置不存在,它将创建数据库。但是,如果更改模型类,然后使用此初始化程序运行应用程序,则会抛出异常。
  2. DropCreateDatabaseIfModelChanges:如果您的模型类(实体类)已更改,则此初始化程序将删除现有数据库并创建新数据库。因此,当模型类发生更改时,您不必担心维护数据库架构。
  3. DropCreateDatabaseAlways:顾名思义,无论您的模型类是否已更改,此初始化程序每次运行应用程序时都会删除现有数据库。当您在每次运行应用程序时需要新数据库时,这将非常有用,就像您在开发应用程序时一样。
  4. 自定义数据库初始化程序:您也可以创建自己的自定义初始化程序,如果上述任何内容不能满足您的要求,或者您想要执行其他一些使用该程序初始化数据库的进程以上初始化程序。
  5. Here,它可以为您提供一般性的想法以及如何使用其中一种方法。

    由于您的评论CreateDatabaseIfNotExists可以帮助您。使用此方法添加或删除模型类时,db将更新,您的数据将保持稳定。

    Here您可以找到Context构造函数和config文件

    的示例 stackoverflow上的

    Another topic about this