重置实体框架迁移,然后同步先前迁移中的模式

时间:2017-03-26 15:58:17

标签: entity-framework ef-migrations

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

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

但是,如何将此重置部署到拥有现有数据库的客户? 当我有一个包含错误的现有数据库时,本地失败: 数据库中已有一个名为“*****”的对象。

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

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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

enter image description here

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

enter image description here

如果EF可以完全调和,那将会成功。我还必须从VS项目中排除最近有针对性的迁移之后的所有迁移。简单的班次选择,右键单击并从项目中排除。

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

enter image description here

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

enter image description here

然后在最后我创建了一个我的模式的幂等脚本到目前为止。使用以下内容:

enter image description here

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