候補者がすでに試みた質問を取得するためのクエリと、候補者が試みていない質問のための別のクエリを設計するのに非常に苦労しています。これは、試験/テスト/フォーム/調査タイプのアプリケーション用です。
シナリオは、候補 (OAS_UserDetail) が多くのグループ (OAS_Group) に関連付けられています。1 つのグループに多くのテストを含めることができます。テストには多くの問題が含まれる場合があります。質問には多くの選択肢があります。
候補者が質問を試みると、セッションへの参照を持つテーブル TestResponse に保存されます (テーブル TestResponse の answerSelected は、実際には QuestionOption.Id です)。TestSession は、TestResponse がユーザー、テスト、およびグループの詳細を取得するためのブリッジとして機能できると思います。
これは、Linq を介したクエリに関する限り、私にとっては良いがやや複雑な設計のように思えます。以下は私がやろうとしたことで、動けなくなり、Linq をクエリ構文ではなくメソッド構文で書くことになりました。
OAS.DataModels.OAS_Question questionsAttempted =
from q in db.OAS_Questions
where q.OAS_Test.OAS_Group.Candidates.Contains(
db.OAS_UserDetails.Single(u => u.UserName == HttpContext.User.Identity.Name)
)
select q;