【问题标题】:Merging 2 SQL Server Databases Structures合并 2 个 SQL Server 数据库结构
【发布时间】:2014-08-17 20:41:31
【问题描述】:

我的系统开始时是一个单一的 WinForms 应用程序,它有一个使用 Entity Framework 的单一数据库。下线,数据库被分支以包含一个用新表扩展的新系统。主 Employee 表已重命名为 Person,所有关联的 FK 引用都在列中使用术语 person 重命名。

此后,现有系统在数据库结构方面发生了变化,添加了新表。

类似:

现在我想将 2 个数据库排成一行,将 Person 表保持在 Employee 之上。我还需要将 2 个实体框架放在一起。我需要一些关于如何做到这一点的提示和指示。

幸运的是,新系统仍在 UAT 中,因此尚未上线。我有这方面的基本人口脚本。

我使用 nHydrate 来维护两个实体框架 - DB First。数据库方面的事情我可以应付。但是,我不确定让我的实体框架恢复正常的最佳方式。

我使用了一些工具来同步数据库,例如 Red Gate 的 SQL Compare。 VS2013 还有一个不错的 SQL Schema Compare。

我对不同的方法有几个想法:

想法1

  1. 通过 EF 数据库设计器手动添加更改
  2. 生成新数据库
  3. 编写要从初始系统复制到新数据库的数据的脚本
  4. 为新系统运行 Population 脚本。

思想2

  1. 通过 EF 数据库设计器手动添加更改
  2. 升级现有系统
  3. 为新系统运行人口脚本

思想3

  1. 以某种方式将 CSDL、MSL、SSDL 文件合并到带有 WinMerge 的实体框架中
  2. 升级现有系统
  3. 为新系统运行人口脚本

我将努力完成这个任务,可能会使用第 3 个想法,除非有人很快在此处发布回复。我想知道社区将如何处理这个问题。

【问题讨论】:

    标签: sql sql-server merge entity-framework-5


    【解决方案1】:

    我认为从一个模型复制和粘贴到另一个模型会失败,但我先尝试了一下,结果成功了。此外,合并 CSDL、MSL、SSDL 文件的建议也不可行,因为它们是根据数据库生成的。

    我最终尝试并成功的是使用 Redgates SQL Compare:

    1. 对新系统更改和现有系统更改运行 SQL 比较。

      这会生成我针对现有系统更改运行的升级脚本。

    2. 将数据库导入模型

      从现有系统更改升级中刷新 EF 模型。

    3. 从当前 EF 模型生成新数据库 - 合并更改

    4. 对初始数据库和合并更改运行 SQL 比较。

      现在我有一个完整的脚本可以从 Initial DB 转到 Merged Changes。

    对于我在现有更改中重命名的表,我必须调整脚本以在删除旧表之前复制数据。花了一些时间和反复试验,但这对我有用。

    希望它可以帮助这个职位的任何人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      相关资源
      最近更新 更多