我的系统作为单个WinForms应用程序启动,其中包含使用Entity Framework的单个数据库。在线下,数据库被分支以包含一个用新表扩展的新系统。主Employee表已重命名为Person,并且所有关联的FK引用都在列中以术语person重命名。
现在的系统已经在数据库结构方面发生了变化,并添加了新表。
类似的东西:
现在我想将2个数据库排成一行,将Person表保留在Employee上。我还需要将2个实体框架结合在一起。我需要一些提示和指示如何做到这一点。
幸运的是,新系统仍处于UAT状态,因此无法使用。我有基本人口脚本。
我使用nHydrate来维护两个实体框架 - 数据库优先。数据库方面我可以应付的事情。但是,我不确定将我的实体框架重新排列的最佳方式。
我使用了一些工具来同步数据库,例如Red Gate的SQL Compare。另外VS2013有一个很好的SQL Schema Compare。
我对不同的方法有几点想法:
思想1
思考2
思考3
我即将努力完成这项任务,可能还有思想#3,除非有人在这里快速发布回复。我想知道社区将如何解决这个问题。
答案 0 :(得分:0)
我认为从一个模型到另一个模型的复制和粘贴会失败,但我先尝试过,但确实如此。此外,合并CSDL,MSL,SSDL文件的建议也是禁止的,因为它们是根据数据库生成的。
我最终尝试过并且工作过的是使用Redgates SQL Compare:
在新系统更改和现有系统更改上运行SQL比较。
这将生成一个升级脚本,我针对现有系统更改运行。
将数据库导入模型
从现有系统更改升级中刷新EF模型。
从当前的EF模型 - 合并更改
在初始数据库和合并更改上运行SQL比较。
现在我有一个完整的脚本可以从初始数据库转到合并更改。
对于我在现有更改中重命名的表,我必须调整脚本以在删除旧表之前复制数据。这需要一点点做和追踪和错误,但这对我有用。
希望它可以帮助这个职位的任何人。