3

Entity Framework の基礎を学ぶための演習として、この小さなアプリケーションを作成しています。Courses、Students、Students_has_Courses の 3 つのテーブルを持つ MySQL データベースを使用します。 DB スキーマ

このデータベースを使用して、Visual Studio でエンティティ モデルを作成しました。 VS スキーマ

それはうまくいっています。テーブルを datagridview にバインドし、データを変更し、ボタンを押して変更を保存できます。しかし、ご覧のとおり、Students_has_Courses は関連付けです (これは私にとってかなり新しいことです)。そして今、私の質問: 指定された学生 ID のすべてのコース ID が必要です (学生が受講しているコースを知るため)。このLINQクエリは問題ないと思いました:

var query = from s in school.Students.AsEnumerable()
            where s.ID == selectedStudentId
            select s.Courses;

しかし、この EntityCollection からコース ID を抽出できないようです。を使用しましたforeach(var course in query)が、ここで本当に立ち往生しています。

4

1 に答える 1

5

次を使用してコースIDを取得できるはずです。

var studentsCourseIDs = (from s in school.Students
                         where s.ID == selectedStudentId
                         select s.Courses.Select(c => c.ID))
                        .Single();

Coursesまたは、セットから開始します。

var studentsCourseIDs = (from c in school.Courses
                         where c.Students.Any(s => s.ID == selectedStudentId)
                         select c.ID)
                        .ToList();

句と選択が適用されるAsEnumerable()前に、studentsテーブル全体がメモリにロードされるため、この例では使用しないでください。where

于 2012-05-28T12:58:33.267 に答える