.net mvc coreを使用しています。私は3つのテーブル:コース、講師、CourseLecturersとの多面的な関係を持っています。 (CourseLecturersがジャンクションテーブル) 私がしたいことは、1つのCourseエントリーのすべての講師を表示することです.3つの列(Id、CourseName、Lecturers)のテーブルのようになります。そして、私はデータを取得し、それを表示することに問題があります。そしてそのポイントは、すべての講師を対象に表示することです(たとえば、1人または複数の講師がいる場合)。今私はこれを達成する方法が不明です。私のビューは私のコースモデルだけを取ります。そして私はEF上で講師の名前にアクセスする方法が不明です。多対多関係のデータの取得と表示
私が見ている限り、CourseLecturersのすべてのエントリをCourseIdと同じにして、CourseLecturersテーブル(LecturerId)内の主キーの他の部分のIDを何らかの方法で接続する必要があります。私が持っているキーを持つすべての講師を選択してください。この時点では、データの選択方法と表示方法がわかりません。
これは、コースの私のモデルである:
public partial class Lecturers
{
[Key]
public int LecturerId { get; set; }
public string Lecturer { get; set; }
}
そしてこれはCourseLecturersのための私のモデルである:
public partial class Courses
{
[Key]
public int CourseId { get; set; }
public string CourseTitle { get; set; }
}
これは講師のための私のモデルである
public partial class CourseLecturers
{
[Key]
[ForeignKey(nameof(Courses))]
public int CourseId { get; set; }
public Courses Courses { get; set; }
[Key]
[ForeignKey(nameof(Lecturers))]
public int LecturerId { get; set; }
public Lecturers Lecturers { get; set; }
}
なら、私は多分私のコースのクラスの中にCourseLecturersクラスを追加し、そのようなデータにアクセスしようとしますか?しかし、それが動作すれば、データを表示する方法、私のモデルで新しいDisplayClassを作成し、そのDisplayClassをビューに渡しますか?
これは、コントローラの私のIndexメソッドです:
public IActionResult Index()
{
return View(_context.Courses.Include(c => c.CourseLecturers).ThenInclude(cl => cl.Lecturers));
}
そして、私のビューは次のようになります。
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.CourseId)
</td>
<td>
@Html.DisplayFor(modelItem => item.CourseTitle)
</td>
<td>
@Html.DisplayFor(modelItem=>item.CourseLecturers.Lecturers.Lecturer)
</td>
</tr>
}
そして、これが表示されますものです: http://imgur.com/a/lVZ0Q
問題は関係を作成していない、何らかの理由で私のビューが複数の講師を持っているコースを複製するので、私が持っている問題はデータを表示することです。 – Marin
あなたはビューを投稿することができます –
そこに、私は投稿にそれを追加しました。 – Marin