2011-02-16 56 views
5

我需要知道如何(如果可能)使用实体框架与来自不同数据库的表关联。我有一个edmx用于我的“xyz”数据库,另一个用于我需要使用EF将它们关联起来的“zyx”。我知道如何使用FK来解决这个问题,这不是我想要的,我希望能够使用可视化编辑器来做到这一点,而不是手工添加FK到我的数据库。来自不同数据库的关联表 - 实体框架

这里有我想要的东西例如之实践:

表用户 - 数据库:ABC 表信息 - 数据库:XYZ

我需要用户到信息,反之亦然关联。

任何人都可以帮助我吗?

谢谢!

+0

顺便说一下,您不能在我的知识中创建交叉数据库FK,也不能通过手或视觉创建。 – 2011-02-16 13:06:40

+0

我知道,那实际上不是FK。例如,将会是一个字段“extID”,在这个字段中,我会从另一个表中放入记录的ID。 PS:但这是我想到的解决方法,可能有更好的方法来解决它。 :D感谢您的评论。 – eestein 2011-02-16 13:08:38

回答

2

您可以将它们与Linq-to-Objects一起查询,但不能与L2S或L2E一起查询。

上下文围绕1个Db连接,您不能跟踪/更新来自多个数据库的实体。

可能的解决方法是从另一个'链接'到其中一个Db。 MS-SQL可以做到这一点。对EF来说,它会出现1个数据库。

1

无法在EF中使用edmx设计图面来实现此目的。

您可以在您的域模型中封装此关联,并在两个EF上下文之间提供分布式事务。我们已经使用EF Context“容器”类实现了后者,该类提供了一个内部上下文集合,当它包含多个上下文(这依赖于IUnitOfWork抽象来有效工作)时使用TransactionScope。