グループ化によるエンティティフレームワーククエリ(多対多)
-
10-07-2019 - |
質問
3つのテーブル(学生、コース、および3番目のStudentCourses割り当てテーブル)を含む古典的な多対多のシナリオがあります。
新しいプロジェクトでEFを使用していますが、EFデザイナーは3番目のテーブルを作成しません。 すべてのコースとそれに割り当てられた生徒数を選択する必要があります。 プレーンSQLの使用は非常に簡単です:
select c.Id, c.Name, Count(sc.*) as StudentCount
from Courses c left join StudentCourses sc on(c.Id=sc.CourseId)
group by c.Id, c.Name
しかし、このクエリをLinq to SQLに変換する方法がわかりません。 アドバイスしてください。
ありがとう。
解決
EFデザイナーはテーブルを非表示にします。まだそこにありますが、アソシエーションを作成するだけなので、コースから学生を参照することも、その逆も可能です。
他のヒント
次のようなことができます:
var list = from c in context.Courses
from s in c.Students
select new
{
StudentName=s.Name,
Class=s.Class,
};
詳細については、このページ
所属していません StackOverflow