【发布时间】:2018-12-19 08:07:11
【问题描述】:
如果我想将迁移添加到项目并注意项目,我想知道什么是最好的指南以及需要考虑的事项:
- 已上线(开发/登台/生产环境)
- 实时版本的模型已更改,某些字段/表已更改 删除/添加
- 由 Azure 应用服务托管(发布设置)
- 是一个使用代码优先的实体框架 6 的 MVC 项目
我知道the basics of adding/using migrations,仅此而已。 我想知道如何实现对我的解决方案的迁移,发布新项目(更改模型)不会丢失任何数据。
这可能吗?谁能建议我看一下对这种设置有很好解释的东西?
编辑 我正在开发中对此进行测试,但如果不重新创建数据库就无法使其工作,因此会丢失现有数据...
我的配置文件:
public Configuration()
{
AutomaticMigrationsEnabled = true; // tried false as well
ContextKey = "ContractCare.Models.ApplicationDbContext";
AutomaticMigrationDataLossAllowed = false;
}
亲切的问候
【问题讨论】:
-
“某些字段/表格被删除/添加” - 您需要更好地解释这一点。在 Code First 中,数据库是根据您的代码模型创建的。当它们发生变化时,可以使用迁移来更新数据库。因此,通常在将迁移添加到现有项目时,您将创建一个捕获当前状态的初始迁移。随后的迁移将使用增量更改更新数据库。如果 staging 和 prod 与此初始快照不同,您将需要手动获取它们以匹配 DEV 基线。
-
我有一个基于模型的现有数据库,该模型与现在不同,并且该数据库中有数据。当时我没有启用迁移。现在我想利用迁移,但具有与具有数据的模型不同的模型,其中某些属性和类不再存在或已添加属性和类(类是 DbSet
的)。我很难找到一种方法将我的模型的这个较新版本部署/发布到应用服务,但保留已经存在于数据库中的数据。 -
运行迁移不会删除数据。如果您删除一列,那么是的,数据将会丢失。我们不在 PROD 中运行迁移。正是出于这个原因,我们从迁移中生成脚本。
-
@SteveGreene 没错,直接从应用程序迁移需要正确的权限。我想您提供的两个链接也可能是 OP 正在寻找的答案
标签: model-view-controller entity-framework-6 entity-framework-migrations data-loss