DB 内のテーブルのミラーである edmx ファイルに次のエンティティをマップしています
。 特定の人物のアンケートにのみ関心があります。
次のように自然に繰り返すことができるように、1 人に対して 1 つのアンケートのみを返すクエリを作成するにはどうすればよいですか。
question.questionnaire_section.questionnaire_field.questionnaire_data
アンケート
ID
名前
order_position
その他のプロパティ
question_section
id
name
order_position
その他のプロパティ
question_fk
question_field
id
name
order_position
その他のプロパティ
question_fk
section_fk
question_data
id
値
その他のプロパティ
field_fk
survey_fk
section_fk
person_pk
個人
ID
名
field_fk
各アンケートには多くのアンケート
セクションがあります
各アンケートセクションには多くのアンケート
フィールドがあります
各アンケートフィールドにはアンケートデータ エンティティに多くのエントリがありますが、個人、フィールド、セクション、アンケートごとに 1 つのエントリしかありません
ナビゲーション プロパティを使用して、次のようにナビゲートできます。
特定の人へのアンケートにのみ関心があります。
次のように反復できるように、1 人に対して 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
}
}
}
}
}