2017-03-26 50 views
0

我正在使用实体框架6.1.3首先进行数据迁移。 我正在重置迁移过程。我删除了迁移历史记录表并创建了当前db状态的新基线快照。一切工作在一个新的细跟以下初始化程序安装:重置实体框架迁移,然后同步先前迁移的模式

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

然而,人们应该如何部署该复位为我们的客户谁拥有现有的数据库?本地失败,当我有一个现有的数据库与错误: 数据库中已经有一个名为'*****'的对象。

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

+1

那么,根据部署和更改的数量,您可以采用基准脚本,只是注释每个存在的东西。可能很乏味,因为你需要比较列,键,索引等。你也可以用存在检查(如果没有数据库对象存在然后创建它)来包围每个数据库对象。 –

回答

0

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

enter image description here

但是,我不知道怎么会制定出针对现有客户。我没有意识到我能够重新搭建我的迁徙。经过很多搜索和反复试验,我能够挽救我的移民。我首先迁移到了一个状态良好的迁移。

enter image description here

它是使用给出的全名很重要。在试错之后,我发现了一个稳定的迁移。我证实了这一运行以下:

enter image description here

它会成功,如果能EF充分调和。我也不得不从VS项目中排除最近有针对性的迁移后的所有迁移。简单的轮班选择,右键单击并从项目中排除。

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

enter image description here

然后我逐步重新脚手架全部破碎迁移。

enter image description here

然后在最后我创造了我的架构的幂等脚本到这一点。使用下列内容:现在

enter image description here

我的迁移并不抱怨模型失配,我很高兴。