繁体   English   中英

在不清除数据的情况下从EF6中的CodeFirst更新数据库

[英]Update database from CodeFirst in EF6 without wiping out data

我想使用EF6的代码优先技术,但是当我对表进行更改时,它将删除数据库并重新创建它,从而清除所有数据。 有什么办法可以阻止这种情况的发生?

我的代码:

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

这些是代码优先方法中的数据库初始化策略:

  1. CreateDatabaseIfNotExists:这是默认的初始化程序。 顾名思义,如果配置不存在,它将创建数据库。 但是,如果更改模型类,然后使用此初始化程序运行应用程序,则它将引发异常。
  2. DropCreateDatabaseIfModelChanges:如果您的模型类(实体类)已更改,则此初始化程序将删除现有数据库并创建新数据库。 因此,当模型类发生更改时,您不必担心维护数据库架构。
  3. DropCreateDatabaseAlways:顾名思义,此初始化程序在每次运行应用程序时都会删除现有数据库,而不管模型类是否已更改。 当您想要全新的数据库时,这在每次运行应用程序时(例如在开发应用程序时)都非常有用。
  4. 自定义数据库初始化程序:如果以上任何一项都不满足您的要求,或者您想执行其他一些使用上述初始化程序初始化数据库的过程,则还可以创建自己的自定义初始化程序。

在这里 ,它可以为您提供总体思路以及如何使用这些方法之一。

由于您的评论, CreateDatabaseIfNotExists帮助您。 使用这种方法,当您添加或删除模型类时, db将被更新并且数据将保持稳定。

在这里,您可以找到Context构造器和config文件的示例

关于此的另一个主题在stackoverflow上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM