实体框架代码优先和现有数据库

时间:2017-04-08 16:30:44

标签: c# asp.net-mvc entity-framework code-first

我正在使用支持安装,删除插件的asp.net mvc的应用程序。

当我想安装新插件时,我有一个注册新路由的Install方法......

对于数据库,我使用代码优先的方法来创建数据库,每个插件都有自己的上下文类。

我的问题是:当我想安装新插件时,我需要在现有数据库中创建其他表,或者如果数据库尚不存在则创建新数据库。如果这些表已经存在,则不应创建任何内容。

我如何实现这一目标?

提前致谢

1 个答案:

答案 0 :(得分:1)

Code First Migrations有两个您将熟悉的主要命令

  • Add-Migration将根据您的更改来支持下一次迁移 自上次创建迁移以来已对您的模型进行了制作
  • 更新 - 数据库将应用任何挂起的迁移到数据库

开发新应用程序时,数据模型会经常更改,每次模型更改时,都会与数据库不同步。您已将实体框架配置为每次更改数据模型时自动删除并重新创建数据库。当您添加,删除或更改实体类或更改DbContext类时,下次运行应用程序时,它会自动删除现有数据库,创建与模型匹配的新数据库,并将其与测试数据一起播种。 在将数据库部署到生产环境之前,这种使数据库与数据模型保持同步的方法很有效。当应用程序在生产中运行时,它通常存储您想要保留的数据,并且您不希望每次进行更改(例如添加新列)时都丢失所有内容。 Code First Migrations功能通过启用Code First来更新数据库模式而不是删除和重新创建数据库来解决此问题。

我建议您查看以下链接,以便更清楚地了解您的问题。

https://msdn.microsoft.com/en-us/data/jj591621