使用linq连接来自不同服务器的两个表

本文关键字:两个 服务器 连接 linq 使用 | 更新日期: 2023-09-27 18:10:25

我试图从不同的服务器连接两个表,但它一直抛出这个异常:

此方法支持LINQ to Entities基础结构,不打算在代码中直接使用。

这是我的查询:

 var myList = (from myTableA in _dbProvider.ContextOne.TableA
               join myTableB in _dbProvider.ContextOne.TableB on myTableA.ProductId equals myTableB.Oid
               join myTableC in _dbProvider.ContextTwo.TableC on myTableB.Id equals myTableC.ProductId
               where 
               select  myTableC.Name).Distinct().ToList();

这是什么意思?我知道我找到了另一种解决方案,将每个表中的数据分别放入列表中,然后将它们连接起来,但这在时间方面非常贪婪还有其他解决办法吗?

使用linq连接来自不同服务器的两个表

不能连接来自两个不同服务器的两个表。绝对不是EF的。最好的方法是只从两个单独的列表中获取数据,然后使用Linq to object将它们连接在一起。

让我做一个虚构的例子:您在一个表上有1000000个发票,每个发票大约有10个项目,在另一个服务器上总共有1000000个发票详细信息。您需要2015年5月4日创建的第10张发票及其详细信息

发送一个查询到第一个DB,只得到那10个发票,提取它们的id,并使用它从另一个服务器查询大约100行。这只比执行单个连接查询慢两倍。

在某些情况下,这是不可能的(两个表上都有条件),您需要添加更多的行,但在简单的场景中,这是可能的。