在不删除数据的情况下更新数据库架构?

Posted

技术标签:

【中文标题】在不删除数据的情况下更新数据库架构?【英文标题】:Update database schema without dropping data? 【发布时间】:2013-03-19 05:35:21 【问题描述】:

我首先使用数据库开始使用 EF 并从数据库生成我的图表。

现在我已经切换并对我的图表进行了许多更改,并希望在不丢失数据的情况下更新我的数据库架构。但是,从图表生成数据库似乎会删除所有表并重新创建它们。

我首先找到了代码的“数据迁移”。模型优先有什么类似的东西,或者我可以用什么方法来维护数据?

我正在使用带有 EF5 的 VS 2012

【问题讨论】:

部署到测试数据库,然后使用您选择的生成差异脚本的工具在测试数据库和生产环境之间进行差异:***.com/questions/5861991/… 除了“从模型生成数据库”将所有漂亮的 DefiningQueries(视图)转换为表格并在此过程中丢弃 edmx 文件。 在这种情况下,我使用 Visual Studio 的架构比较功能。它工作得很好。重命名的列是个问题,但除此之外它可以完成工作。 【参考方案1】:

别忘了搜索SO网站,

http://visualstudiogallery.msdn.microsoft.com/df3541c3-d833-4b65-b942-989e7ec74c87/

安装后,当您选择“从模型生成数据库...”时 它将弹出一个新向导,您可以选择“生成迁移 T-SQL”

另一种方法是使用自定义 t4 从您的模型生成 DbMigrationsConfiguration 和 DbContext,您根本不需要运行 Enable-Migration。只需在包管理器控制台中运行 Add-Migration 和 Update-Database

http://blog.amusedia.com/2012/08/entity-framework-migration-with-model.html

【讨论】:

我确实搜索过 SO,但正如我在问题中列出的那样,我使用的是 VS2012 和 EF5,不幸的是,该工具都不支持这两者。 没问题,t4模板是最好的方式 您能否详细说明我将如何使用 T4 模板来完成此任务..?

以上是关于在不删除数据的情况下更新数据库架构?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失 docker 数据的情况下更新 prometheus 配置文件

如何在不覆盖当前数据的情况下更新 Mongoose 中的混合类型字段?

在不重新加载的情况下更新 UITableViewCell

在不加载整个地图的情况下更新谷歌地图中的标记

如何在不将数据保存到数据库的情况下更新 Gridview 行

在不更改实体数据的情况下更新 @Updatetimestamp