【发布时间】:2013-12-23 20:54:10
【问题描述】:
我刚刚开始在几个不同的团队场景中测试迁移,以确保迁移能够在 git / 多个用户 / 多个分支上按预期工作。但是我马上就遇到了一个问题。在分支 1 上,我添加了初始迁移(在具有 165 个实体的现有项目上),删除 Up/Down 中的代码(仅使用模型快照),然后基于更新数据(创建 __MigrationHistory 表就好了)。我将它合并到分支 2(完全相同的模型 - 分支 1 的精确副本),使用我新合并的迁移运行 update-database,它显示无法更新数据库以匹配当前模型,因为有待处理的更改。没有待定的更改,两种模型完全相同。我在这里缺少什么吗?我认为只有在迁移失控(合并,来自不同用户的模型更改)时,我才应该遇到这个问题。
那么为什么我必须在分支 1 和分支 2 上都执行 add-migration Initial?它们被合并并且完全相同。
注意事项:EF 5(技术上为 4.4)和 .NET 4.0。 DevArt dotConnect for Oracle v 8.1.55.0
编辑:我已阅读 this 帖子,但我不在不同的平台上,我在同一台计算机上 - 只是不同的分支。
【问题讨论】:
-
如果合并后在分支 2 上执行
add-migration,Up()方法中是否添加了任何内容?代码/资源文件中的元数据是否不同? -
其实我就是这么做的,分支 1 中的哈希有 85656 个字符 - 分支 2 有 85660 个字符。
-
有时在使用 EF Migrations 时,它只是一个黑匣子。如果没有向
Up()方法添加任何内容并且只有元数据不同,我不知道该怎么做。我一直在考虑编写一个工具,可以反序列化代码中的元数据以及从数据库加载元数据并进行比较。如果我有更多的时间...... -
我按照你说的做了,不同的是我的Schema名称。它存储在 EDMX 中。我的两个数据库 [显然] 命名不同。那么,这提出了一个有趣的问题。仅仅因为我针对不同的数据库,我总是会有“模型”更改。这可能是 Oracle / Devart 特定的,所以我会问他们。
标签: .net-4.0 entity-framework-5 devart dotconnect