EF4交叉数据库关系

时间:2010-04-27 18:30:03

标签: entity-framework-4 cross-database

我想知道EF4是否支持跨数据库关系?例如:

DB1

Author
  Id
  Name

DB2

Posts
  Id
  Content
  db1.Author.Id

在我的ef4模型中,我需要做些什么才能获得这种关系?

你们有什么想法吗?

由于

3 个答案:

答案 0 :(得分:5)

我发现this entry in Microsoft Connect回答了关于EF此刻给予的支持的问题(实际上它还没有得到支持)。

还发现a thread in Social MSDN关于这个问题。

Stack Overflow上的其他链接:

总之,唯一给出的替代方案是:

  1. Using views in EF

  2. Use NHibernate instead

答案 1 :(得分:4)

如果您的数据库支持同义词,则可以欺骗EF跨越多个数据库。我写了怎么做here

基本上,每个数据库最终都有一个edmx文件,以及一个将它们合并到一个edmx文件中的脚本。同义词用于通过使用实际的表名引用另一个数据库,因此当您尝试从database1访问database2.table时,EF不会引用。您仍然需要在EF模型中手动设置两个数据库之间的链接,但一旦设置,即使您重新运行合并脚本,它们也会保留。

设置脚本以及合并edmx文件的脚本将发布在链接

答案 2 :(得分:3)

我最近开始了一个项目,该项目使用具有两个数据库的实体框架,一个Oracle和一个SQL Server。我在实体框架中找不到任何有关跨数据库或多数据库支持的信息。

MS Entity框架团队的大多数帖子都有几年的历史,并表明在单个模型中包含两个数据库并不是很快就会包含的功能。虽然我怀疑答案是否定的,但我有兴趣就是否自己被列入2010年有一个具体的答案。

目前,out project通过为每个数据库设置单独的实体模型来解决此限制。这解决了我们迄今为止在项目中遇到的大多数情况的问题。

如果我们需要同时查询两个数据库中的数据,我们只需在一个或另一个数据库中创建一个视图。由于我们使用的是Oracle和SQL Server,因此该视图将使用链接服务器(SQL)或DBLink(Oracle)。

实体框架中视图的缺点是我们不得不花费比预期更多的时间来使主键工作。

希望这有帮助。