我正在尝试使用实体框架来创建一个复杂的查询并陷入连接中。浏览了一些文档后,我似乎找不到正确的解决方案,所以也许这里有人可以提供帮助。
我有一个数据结构,其中一个家庭有几个家庭成员,每个家庭成员在收入表中可以有多个条目(在不同的注册日期),并且在健康状况表中可以有多个条目。
我想获得的是以下查询的结果
select [some stuff] from FamilyMember fm
left join FamilyMemberIncome fmi on fm.id=fmi.familymemberid
left join Education e on e.id=fmi.educationid
left join FamilyMemberHealthCondition fmhc on fm.id=fmhc.familymemberid
left join HealthCondition hc on fmhc.healthconditionid=hc.id
这显然会为单个家庭成员返回多个结果,但这没关系。我的代码尝试是这样开始的(但不正确:“id 不是匿名类型的成员”)
Dim familyMembers As IQueryable = database.FamilyMember _
.Join( _
database.FamilyMemberIncome, _
Function(fm) fm.id, _
Function(fmi) fmi.familymemberid, _
Function(fm, fmi) New With { _
.fmEducation = fmi.Education, _
.fmIncome = fmi.averagemonthlyincome, _
.fmProfession = fmi.profession _
}
) _
.Join( _
database.FamilyMemberHealthCondition, _
Function(fm) fm.id, _
Function(fmhc) fmhc.familymemberid, _
Function(fm, fmhc) New With { _
.fmHealthCondition = fmhc.HealthCondition
}
)
有人可以告诉我(或指向我解释的文章)这样做的正确方法吗?