使实体框架模型跨越多个数据库

Rac*_*hel 29 sql-server entity-framework synonym multiple-databases

做某些事情是否有效

CREATE SYNONYM [dbo].[MyTable] FOR [AnotherDatabase].dbo.[MyTable]

然后修改Entity Framework的edmx文件以读取此对象,就像任何其他表一样?

我做了一个快速的样本测试,它似乎在选择和更新时工作正常,但我想知道是否有任何理由我不应该这样做

我通过创建指向第二个数据库的edmx文件,在那里构建实体,然后将定义复制/粘贴到第一个数据库的edmx文件中来获取表定义.

UPDATE

如果有人有兴趣,我写下了我在这里制作edmx文件跨越多个数据库所做的工作.它包括用于生成同义词和合并edmx文件的脚本.

Lad*_*nka 11

如果你做了一个测试并且它有效,你可能会展示其他人都不知道的东西.到目前为止,我总是回答这类问题:不可能将单个模型与两个数据库一起使用(根据隐藏第二个数据库中表的视图,有一些更丑陋的解决方法).现在我知道两个解决方法.

这种方法的唯一缺点是,如果从数据库运行更新模型,则手动对EDMX的SSDL部分进行的所有更改都将丢失.这意味着要么手动开发EDMX(这是非常辛苦的工作),要么使用一些工具/脚本,它将在每次从数据库更新后添加更改.

  • 我实际上组合了一个脚本,它将合并edmx文件,而不会覆盖你已经完成的更改.所以我的最终结果是一个项目持有我的工作edmx,一个项目持有我的第二个数据库的edmx,第三个项目运行一个脚本,将edmx#2与edmx#1合并. (2认同)