在 EF6 中从 CodeFirst 更新数据库,而不会擦除数据



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

我的代码 :

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

以下是代码优先方法中数据库启动的策略:

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

在这里,它可以让您大致了解如何使用这些方法之一。

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

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

关于堆栈溢出的另一个主题。

最新更新