来自两个不同实体框架的Linq联接查询

本文关键字:框架 实体 Linq 查询 两个 | 更新日期: 2023-09-27 17:58:59

我使用的是两个实体框架。一个是项目数据库,另一个是员工数据库。我将项目经理的员工id存储在项目数据库表中,但当我进行分配时,我必须从员工数据库中加入员工表,以显示员工姓名而不是员工id。

如何连接两个实体。

来自两个不同实体框架的Linq联接查询

有几种不同的方法来实现这一点。

您可以在其中一个数据库上创建一个视图,该视图连接来自不同dbs的两个表,然后它将成为EntityFramework中的一个对象。

您还可以从每个表中获取要连接的对象,作为首先与EF断开连接的内存中对象。显然,在将表/结果拉入内存之前,您希望在数据库端尽可能多地进行过滤。然后你可以加入断开连接的对象

var projects = db1.projects.Where(p=> /** filter here **/).Select(p=> /** select new anonymous type **/).ToList()
var employees = db2.employees.Where(e=> /** filter here **/).Select(e=> /** select new anonymous type **/).ToList()
from p in projects
join e in employee
on p.managerid equals e.employeeid
select new { EmployeeId = e.EmployeeId, Project = p.ProjectName };