合并2个SQL Server数据库结构

时间:2014-08-17 20:41:32

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

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

现在的系统已经在数据库结构方面发生了变化,并添加了新表。

类似的东西:

System History

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

幸运的是,新系统仍处于UAT状态,因此无法使用。我有基本人口脚本。

我使用nHydrate来维护两个实体框架 - 数据库优先。数据库方面我可以应付的事情。但是,我不确定将我的实体框架重新排列的最佳方式。

我使用了一些工具来同步数据库,例如Red Gate的SQL Compare。另外VS2013有一个很好的SQL Schema Compare。

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

思想1

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

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

      1. 以某种方式将CSDL,MSL,SSDL文件与WinMerge的Entity Framework合并,例如
      2. 升级现有系统
      3. 为新系统运行人口脚本
      4. 我即将努力完成这项任务,可能还有思想#3,除非有人在这里快速发布回复。我想知道社区将如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

我认为从一个模型到另一个模型的复制和粘贴会失败,但我先尝试过,但确实如此。此外,合并CSDL,MSL,SSDL文件的建议也是禁止的,因为它们是根据数据库生成的。

我最终尝试过并且工作过的是使用Redgates SQL Compare:

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

    这将生成一个升级脚本,我针对现有系统更改运行。

  2. 将数据库导入模型

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

  3. 从当前的EF模型 - 合并更改

  4. 生成新数据库
  5. 在初始数据库和合并更改上运行SQL比较。

    现在我有一个完整的脚本可以从初始数据库转到合并更改。

  6. 对于我在现有更改中重命名的表,我必须调整脚本以在删除旧表之前复制数据。这需要一点点做和追踪和错误,但这对我有用。

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