[英]Entity Framework join across two databases
我有一个WebAPI。 我需要返回ActivityRegisters
列表。 我们有一个这样做的存储库:
public IQueryable<ActivityRegister> GetRegisters(int activityID)
{
return ActivityDBContext.ActivityRegisters.Where(x => x.ActivityID == activityID x.IsActive == true).OrderBy(x => x.ActivityRegisterID).AsQueryable();
}
但是, ActivityRegister
表上有一个可为空的列,称为roomID
。 虽然有一个Rooms表,但是它在另一个数据库中,该数据库具有AdminDBContext
。 我需要API返回管理数据库中存在的有效负载中的roomName
。 如何获得上述使用roomID
返回roomName
的roomID
? 谢谢,我是新来的,正在学习。
您可以在跨两个不同上下文的表上执行联接,如下所示:
public IQueryable<ActivityRegister> GetRegisters(int activityID)
{
var activityRegisters = ActivityDBContext.ActivityRegisters.Where(x => x.ActivityID == activityID x.IsActive == true).OrderBy(x => x.ActivityRegisterID).ToList();
var roomIdsFromActivityRegisters = activityRegisters.Select(activityRegister => activityRegister.roomID);
var rooms = AdminDBContext.Rooms.Where(room => roomsIdFromActivityRegisters.Contains(room.Id)).ToList();
var resultFromJoinAcrossContexts = (from activityRegister in activityRegisters
join room in rooms on activityRegister.roomID equals room.Id
select new ActivityRegister
{
Room = room,
roomID = room.Id,
Id = activityRegister
});
return resultFromJoinAcrossContexts.AsQueryable();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.