2016-07-30 5 views
0

.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

答えて

0

私は何だと思います探しているのはhereで、を使用して多対多関係のデータモデルを作成する方法を詳しく説明していますをASP.Net MVCとする。

+0

問題は関係を作成していない、何らかの理由で私のビューが複数の講師を持っているコースを複製するので、私が持っている問題はデータを表示することです。 – Marin

+0

あなたはビューを投稿することができます –

+0

そこに、私は投稿にそれを追加しました。 – Marin

0

これは読み取り専用です。あなたのDBのビューを定義すると、EFよりはるかに速くなり、アイテムにアクセスするための読み取り専用のエンティティが作成されます。