【问题标题】:dotConnect Oracle - migrations - Initial migration in two identical branches says differing modeldotConnect Oracle - 迁移 - 两个相同分支中的初始迁移表示不同的模型
【发布时间】: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-migrationUp() 方法中是否添加了任何内容?代码/资源文件中的元数据是否不同?
  • 其实我就是这么做的,分支 1 中的哈希有 85656 个字符 - 分支 2 有 85660 个字符。
  • 有时在使用 EF Migrations 时,它只是一个黑匣子。如果没有向Up() 方法添加任何内容并且只有元数据不同,我不知道该怎么做。我一直在考虑编写一个工具,可以反序列化代码中的元数据以及从数据库加载元数据并进行比较。如果我有更多的时间......
  • 我按照你说的做了,不同的是我的Schema名称。它存储在 EDMX 中。我的两个数据库 [显然] 命名不同。那么,这提出了一个有趣的问题。仅仅因为我针对不同的数据库,我总是会有“模型”更改。这可能是 Oracle / Devart 特定的,所以我会问他们。

标签: .net-4.0 entity-framework-5 devart dotconnect


【解决方案1】:

我想通了,在我从 EDMX 迁移到 dotConnect 代码优先 + 迁移的初始测试中,我将架构添加到 _Mapping 文件中以进行流畅的映射。我不得不删除这个架构。示例:

代替:

this.ToTable("ADDRESS", "SCHEMA");

我不得不使用:

this.ToTable("ADDRESS");

我也在 OnModelCreating 中使用这些选项:

var config = Devart.Data.Oracle.Entity.Configuration.OracleEntityProviderConfig.Instance;
config.Workarounds.IgnoreDboSchemaName = true;
config.Workarounds.IgnoreSchemaName = true;

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多