我在我的 edmx 文件中映射了以下实体,该文件是我数据库中表的镜像:
我只对特定人的问卷感兴趣。
我如何构建一个查询,它只会为一个人带回一份问卷,以便我仍然可以自然地遍历它,如下所示:
问卷调查问卷.问卷调查部分.问卷调查字段.问卷调查数据
问卷
id
名称
order_position
其他属性
问卷
_部分
ID
名称订单_位置
其他属性
问卷
_fk
问卷
_字段
ID
名称
order_position
其他属性
问卷_fk
section_fk
问卷
_数据
id
值
其他属性
field_fk
问卷_fk
section_fk
person_pk
个人
ID
名称
field_fk
每个问卷有许多问卷调查
每个问卷调查部分有许多问卷
调查字段
每个问卷调查字段在问卷数据实体中有许多条目,但每个人、字段、部分和问卷只有一个条目
使用我的导航属性,我可以像这样导航:问卷调查.questionnaire_section.questionnaire_field.questionnaire_data
我只对特定人的问卷感兴趣。
如何构建一个只会为一个人带回 1 个问卷的查询,以便我可以按如下方式遍历它:
IQueryable<questionnaire> queryResult = from q in _db.questionnaires
where q.id == 1 //only intrested in 1 questionnaire
select q;
foreach (questionnaire myQuestionnaire in queryResult)
{
Console.WriteLine(myQuestionnaire.name);
foreach (questionnaire_section mySection in myQuestionnaire.questionnaire_section)
{
Console.WriteLine(mySection.name);
foreach (questionnaire_field myField in mySection.questionnaire_field)
{
Console.WriteLine(myField.name);
foreach (questionnaire_data myData in myField.questionnaire_data)
{
// here I will get the data for all people
Console.WriteLine(myData.value);
// I am only intrested in the data for 1 person
// so I could do this:
if (myData.person_fk == 1)
// I dont want to bring all the questionnaire_data for each person back from the db.
{
Console.WriteLine(myData.value);
// I'm only interested in the questionnaire_data for a single person
}
}
}
}
}