gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 06:23:29 26 4
gpt4 key购买 nike

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

This method supports LINQ to Entities infrastructure and is not intended to be used directly from your code.

这是我的查询:

 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 objects 将它们连接在一起。

我打个假想的例子:你在一张 table 上有1000,000张发票,每张大约有10个项目,总共有10,000,000条发票明细在另一个服务器上。您需要 2015 年 5 月 4 日创建的 10 个第一张发票的发票及其详细信息

您向第一个数据库发送查询,只获得那 10 张发票,提取它们的 id 并使用它从另一台服务器查询大约 100 行。这仅比进行单个连接查询慢两倍左右。

在某些情况下这是不可能的(您在两个表上都有条件)并且您需要带来更多行,但在简单的情况下这是可能的。

关于c# - 使用linq连接来自不同服务器的两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32272091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com