使用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();
这是什么意思?我知道我找到了另一种解决方案,将每个表中的数据分别放入列表中,然后将它们连接起来,但这在时间方面非常贪婪还有其他解决办法吗?
不能连接来自两个不同服务器的两个表。绝对不是EF的。最好的方法是只从两个单独的列表中获取数据,然后使用Linq to object将它们连接在一起。
让我做一个虚构的例子:您在一个表上有1000000个发票,每个发票大约有10个项目,在另一个服务器上总共有1000000个发票详细信息。您需要2015年5月4日创建的第10张发票及其详细信息
发送一个查询到第一个DB,只得到那10个发票,提取它们的id
,并使用它从另一个服务器查询大约100行。这只比执行单个连接查询慢两倍。
在某些情况下,这是不可能的(两个表上都有条件),您需要添加更多的行,但在简单的场景中,这是可能的。