我想知道如何(如果可能)使用实体框架关联来自不同数据库的表。我有一个edmx用于我的“xyz”数据库,另一个用于我的“abc”我需要使用EF关联它们。我知道如何使用FK解决这个问题,但这不是我想要的,我希望能够使用可视化编辑器,而不是手动将FK添加到我的数据库中。
这是我想要完成的一个实际例子:
表用户 - 数据库:abc
表消息 - 数据库:xyz
我想将User与Message关联,反之亦然。
有人能帮帮我吗?
谢谢!
答案 0 :(得分:3)
您可以与Linq-to-Objects一起查询它们,但不能与L2S或L2E一起查询。
上下文包含1个Db连接,您无法跟踪/更新来自多个数据库的entites。
可能的解决方法是从另一个“链接”到其中一个Db。 MS-SQL可以做到这一点。对于EF,它将显示为1个数据库。
答案 1 :(得分:1)
使用EF中的edmx设计表面无法实现此目的。
您可以在域模型中封装此关联,并在两个EF上下文之间提供分布式事务。我们已经使用EF Context“container”类实现了后者,它给出了一个内部的上下文集合,当它包含多个上下文时使用TransactionScope(这依赖于IUnitOfWork抽象有效地工作)。