【问题标题】:Resetting Entity Framework Migrations then synchronizing schemas from previous migrations重置实体框架迁移,然后从以前的迁移同步模式
【发布时间】:2017-04-03 23:54:30
【问题描述】:

我首先使用 Entity Framework 6.1.3 数据迁移和代码。 我正在重置迁移。我已经删除了迁移历史表并创建了数据库当前状态的新基线快照。使用以下初始化程序在新安装时一切正常:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<T>, Migrations.Configuration>(true));

但是,应该如何将此重置部署给拥有现有数据库的客户?当我有一个现有数据库并出现错误时,这会在本地失败: 数据库中已经有一个名为“*****”的对象。

在需要重置迁移和同步现有数据库的架构时,是否有人有更好的方法?

【问题讨论】:

  • 嗯,根据部署和更改的数量,您可以使用您的基线脚本,然后注释掉每个脚本中存在的内容。可能很乏味,因为您需要比较列、键、索引等。您还可以使用存在性检查来封闭每个数据库对象(如果不存在数据库对象,则创建它)。

标签: entity-framework entity-framework-migrations


【解决方案1】:

我开始认为我需要重置我的迁移,因为我团队中以前的开发人员没有正确使用 Add-Migrations 脚本。这导致了以下错误:

但是,我不确定这对现有客户有何影响。我没有意识到我能够重新搭建我的迁移。经过大量的搜索和反复试验,我能够保存我的迁移。我首先迁移到状态良好的迁移。

使用给定的完全限定名称很重要。经过反复试验,我找到了稳定的迁移。我通过运行以下命令验证了这一点:

如果 EF 能够完全协调,它就会成功。我还必须从 VS 项目中排除最近目标迁移之后的所有迁移。简单的移位选择,右键单击并从项目中排除。

然后我在更新数据库后将下一次迁移添加回项目。我还使用 fluent API 排除了当前目标迁移后的所有模型更改。

然后我逐步重新构建所有损坏的迁移。

然后在最后我创建了一个我的模式的幂等脚本直到这一点。使用以下内容:

我的迁移现在没有抱怨模型不匹配,我很高兴。

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 2015-05-11
    • 2012-04-04
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多