我有一個複雜的查詢與EF執行使用LINQ。我知道這樣做手工與多個循環的方式,但我想與LINQ查詢做到這一點:LINQ-EF查詢分組多個表
場景:測試中心,爲學生
數據庫涉及到我的情況5個基本表:測試,提問,回答,結果和參與者。
測試包含測試本身。 (int testId,string testName)。 1-N與問題的關係。
問題包含測試問題。 (int questionID,int testId,string questionText)
答案包含問題的每個可能的答案:(int answerId,int questionId,bool isCorrect)與問題的1-N關係。
結果包含回答這個問題每每一個答案,一個記錄,有關學生:(INT ResultId,詮釋AnswerId,INT participantId,布爾isSelectedByParticipant)1:1個的答案關係。
參加者:(int participantId)。與結果1:1的關係。
我想知道一個學生在每次考試中成功回答了多少個答案(因此學生可以做一些課程考試)。一個問題可以有一個或多個答案正確,但總是至少有一個答案是正確的,所以如果與問題相關的每個答案都沒有被學生標記(isSelectedByParticipant = false),那麼該問題的結果是錯誤的。
非常感謝大家的幫助烏拉圭回合。
不確定結果的實體IsSelectedByParticipant attribure,因爲據我瞭解,進入結果將是一個學生(ParticipantId) – Vasan
有任何記錄你是對的,但默認情況下,結果表中充滿了參加考試的每個學生(在他出席之前),用IsSelectedByParticipant將每個結果標記爲「假」,因此默認情況下,學生會失敗一切,除非他爲每個問題標記一個答案這是我沒有定義的業務規則)。 – Carlos
我知道這不是問題,但我不確定你是否試圖存儲太多信息。我認爲結果應該是參與者針對某個問題的每個回答(選定答案)。在這種情況下,您不需要標記「IsSelectedByParticipant」就好像它沒有存儲一樣,它沒有被選中?試圖抓住這裏。 – army