EF4跨数据库关系

7
我想知道EF4是否支持跨数据库关系?例如:
db1
Author
  Id
  Name

db2

Posts
  Id
  Content
  db1.Author.Id

我在我的ef4模型中想获得这个关系,理想情况下我需要做什么?

你们有任何想法吗?

谢谢

3个回答

5

4
如果您的数据库支持同义词,您可以欺骗EF跨多个数据库。我在这里写了如何做:这里
基本上,每个数据库都会得到一个edmx文件,并且会有一个脚本将它们合并成单个edmx文件。使用同义词来引用另一个数据库的实际表名,这样EF在尝试从database1访问database2.table时不会出现问题。您仍然需要在EF模型中手动设置两个数据库之间的链接,但是一旦设置,它们将保持不变,即使您重新运行合并脚本。
设置同义词和合并edmx文件的脚本已发布在链接中。

我建议您在这里投票赞成我的uservoice建议:http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2730532-make-entity-framework-designer-support-synonyms 如果我们可以在设计程序中获得同义词支持,那么一切都将变得非常简单。此外,请鼓励任何其他对跨数据库支持感兴趣的人来投票。 - Erik Funkenbusch

3
我最近开始了一个项目,使用了Entity Framework和两个数据库,一个是Oracle,一个是SQL Server。我找不到任何关于Entity Framework支持跨数据库或多数据库的信息。
大多数来自MS Entity Framework团队的帖子都是几年前发布的,并且表明在单个模型中包含两个数据库不是一个即将包括的功能。我很想知道它是否在2010年被包括进去了,尽管我怀疑答案是否定的。
目前,我们的项目通过为每个数据库创建单独的实体模型来解决此限制。这已经解决了我们在该项目中遇到的大多数情况的问题。
在需要同时查询两个数据库中的数据的情况下,我们只需在其中一个数据库中创建视图。由于我们使用的是Oracle和SQL Server,因此此视图将利用链接服务器(SQL)或DBLink(Oracle)。
在Entity Framework中使用视图的缺点是我们不得不花费比预期更多的时间来使主键正常工作。
希望这可以帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接