代码之家  ›  专栏  ›  技术社区  ›  Daniel

EF4跨数据库关系

  •  7
  • Daniel  · 技术社区  · 16 年前

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

    dB1

    Author
      Id
      Name
    

    DB2

    Posts
      Id
      Content
      db1.Author.Id
    

    理想情况下,我需要做什么才能在我的EF4模型中得到这种关系?

    你们知道吗?

    谢谢

    3 回复  |  直到 12 年前
        1
  •  5
  •   Community Mohan Dere    9 年前

    我找到了 this entry in Microsoft Connect 这就回答了英孚目前提供支持的问题(实际上还没有得到支持)。

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

    堆栈溢出时的其他链接:

    总之,唯一给定的备选方案是:

    1. Using views in EF

    2. Use NHibernate instead

        2
  •  4
  •   Rachel    15 年前

    如果您的数据库支持同义词,那么您可以利用ef跨多个数据库。我写了怎么做 here .

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

    设置同义词和合并EDMX文件的脚本发布在链接中

        3
  •  3
  •   Dean    16 年前

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

    MS Entity Framework团队的大多数帖子都有几年的历史,这表明在一个模型中包含两个数据库并不是很快就会包含的特性。虽然我怀疑答案是否定的,但我对自己是否在2010年就把它包括在内有一个具体的答案很感兴趣。

    目前,out项目通过为每个数据库建立一个单独的实体模型来绕过这个限制。这就解决了我们到目前为止在项目中遇到的大多数场景的问题。

    在需要同时从两个数据库查询数据的情况下,我们只需在一个或其他数据库中创建一个视图。由于我们使用的是Oracle和SQL Server,所以此视图将使用链接服务器(SQL)或dblink(Oracle)。

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

    希望这有帮助。

    推荐文章