model-view-controller - Entity Framework 实现代码优先迁移并防止数据丢失

标签 model-view-controller entity-framework-6 entity-framework-migrations data-loss

我想知道如果我想将迁移添加到项目并注意该项目,最好遵循的指南是什么以及需要考虑的事项:

  • 已上线(开发/登台/生产环境)
  • 实时版本的模型已更改,某些字段/表格已更改 删除/添加
  • 由 Azure 应用服务托管(发布设置)
  • 是使用代码优先的 Entity Framework 6 的 MVC 项目

我知道the basics of adding/using migrations但仅此而已。 我想知道如何实现对我的解决方案的迁移,发布新项目(更改后的模型)而不丢失任何数据

这可能吗?有人可以建议我看一些对这种设置有很好解释的东西吗?

编辑 我正在开发中对此进行测试,但如果不重新创建数据库,我就无法使其工作,因此会丢失现有数据......

我的配置文件:

public Configuration()
{
    AutomaticMigrationsEnabled = true; // tried false as well
    ContextKey = "ContractCare.Models.ApplicationDbContext";
    AutomaticMigrationDataLossAllowed = false;
}

亲切的问候

最佳答案

将空快照迁移添加到您的 DEV 环境。这将捕获该模型的当前状态:

enable-migrations
Add-Migration InitialBaseline –IgnoreChanges  // Tells EF not generate Up() code of existing objects
update-database

现在,DEV 中的所有后续更改都可以通过更改连接字符串并重新运行或生成可在这些服务器上运行的脚本来部署到其他环境update-database -Script

在此之前,您必须使用已有的流程将其他环境“ catch ”DEV 状态。然后,将 InitialBaseline 迁移应用到这些环境。

接下来,您可以将 DEV 迁移应用到 UAT、STG 以及最终的 PROD。由于大量迁移往往发生在 DEV 中,因此您可以将这些迁移汇总为单个迁移,如 Chris 所解释的 here .

关于model-view-controller - Entity Framework 实现代码优先迁移并防止数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53846938/

相关文章:

model-view-controller - 为什么在服务器上使用 MVC?这不是客户端模式吗?

java - 在 Spring MVC 中生成路由的推荐方法是什么?

asp.net-mvc - (更好的实践)你如何将 JSON 结果放入 ASP.net MVC 框架中?

c# - 使用 UpdateAsync 方法 ASP.NET Entity Framework

entity-framework-6 - EF Core - 尚未为此 DbContext 配置数据库提供程序

entity-framework - EF 5代码优先迁移批量SQL数据种子

asp.net-mvc - 在模型层 (MVC) 上实现应用程序逻辑

entity-framework - 第一个 Entity Framework 6 非查询的 6 秒预热时间

c# - Npgsql/EF 6 - json 列

entity-framework - 自数据库创建以来,支持 'DataContext' 上下文的模型已更改