如何使用 linq 查询从两个不同的 edmx 连接两个表。有没有办法一次从 2 个不同的 edmx 查询。
谢谢。
更新
根据您的评论,EF 无法跨 2 个不同的上下文解析组合表达式树。
如果表中的记录总数相对较少,或者如果您可以将连接中的记录数减少到少量行(例如每行 < 100),那么您可以.ToList() / .ToArray() / .AsEnumerable()
从两个表中实现数据(例如)并使用Linq join
如下。
例如,连接所需的从两个数据库中仅选择一小组数据的yesterday
位置在哪里:DateTime
var reducedDataFromTable1 = context1.Table1
.Where(data => data.DateChanged > yesterday)
.ToList();
var reducedDataFromTable2 = context2.Table2
.Where(data => data.DateChanged > yesterday)
.ToList();
var joinedData = reducedDataFromTable1
.Join(reducedDataFromTable2,
t1 => t1.Id, // Join Key on table 1
t2 => t2.T1Id, // Join Key on table 2
(table1, table2) => ... // Projection
);
但是,如果连接所需的两个数据库中的数据大于合理预期在内存中完成的数据,那么您需要研究替代方案,例如:
原始答案
我相信您正在寻找 Linq JOIN 扩展方法
您可以加入以下任意 2 个IEnumerables
:
var joinedData = context1.Table1
.Join(context2.Table2,
t1 => t1.Id, // Join Key on table 1
t2 => t2.T1Id, // Join Key on table 2
(table1, table2) => ... // Projection
);
在哪里:
new {Name = table1.Name, Data = table2.SalesQuantity}