【问题标题】:Entity Framework code-first and existing database实体框架代码优先和现有数据库
【发布时间】:2017-04-08 16:30:43
【问题描述】:
我正在开发一个支持安装、删除插件的带有 asp.net mvc 的应用程序。
当我想安装一个新插件时,我有一个 Install 方法来注册新的路由和 ...
对于数据库,我使用代码优先的方法来创建数据库,每个插件都有自己的上下文类。
我的问题是:当我想安装一个新插件时,我需要在我现有的数据库中创建额外的表,或者如果数据库还不存在则创建一个新的数据库。如果这些表已经存在,则不应创建任何内容。
我如何做到这一点?
提前致谢
【问题讨论】:
标签:
c#
asp.net-mvc
entity-framework
code-first
【解决方案1】:
Code First 迁移有两个您将要熟悉的主要命令
- Add-Migration 将根据您所做的更改构建下一次迁移
自上次创建迁移以来已对您的模型进行了改进
- Update-Database 会将所有挂起的迁移应用到数据库
当您开发一个新应用程序时,您的数据模型会频繁更改,并且每次模型更改时,它都会与数据库不同步。您已将实体框架配置为在每次更改数据模型时自动删除并重新创建数据库。当您添加、删除或更改实体类或更改 DbContext 类时,下次运行应用程序时,它会自动删除您现有的数据库,创建一个与模型匹配的新数据库,并使用测试数据为其播种。
在将应用程序部署到生产环境之前,这种使数据库与数据模型保持同步的方法效果很好。当应用程序在生产环境中运行时,它通常会存储您想要保留的数据,并且您不想在每次进行更改(例如添加新列)时丢失所有内容。 Code First 迁移功能通过使 Code First 更新数据库架构而不是删除并重新创建数据库来解决此问题。
我建议您查看以下链接,这可以让您更清楚地了解您的问题。
https://msdn.microsoft.com/en-us/data/jj591621