2016-07-30 110 views
0

我正在使用.net mvc核心。我與3個表有多對多的關係:課程,講師,課程講師。 (CourseLecturers是路口表) 我想要做的是向所有講師展示一個課程條目,因此它將像一個包含3列的表:Id,CourseName和Lecturers。我有一個獲取數據的問題,然後顯示它。它的重點是向所有講師展示一個主題(例如,如果有一個或多個講師)。現在我不確定如何實現這一點。由於我的視圖只會使用我的課程模型。我不確定如何通過EF訪問Lecturer名稱。獲取並顯示來自多對多關係的數據

據我所知,我應該從CourseLecturers中選擇所有條目,其中課程ID等於我的CourseId,然後以某種方式連接我的CourseLecturers表(LecturerId)中主鍵的另一部分的ID和用我的鑰匙選擇所有的講師。在這一點上,我不知道如何選擇數據,以及如何顯示它。

這是我的課程模式:

public partial class Courses 
{ 
    [Key] 
    public int CourseId { get; set; } 
    public string CourseTitle { get; set; } 
} 

這是我的講師型號:

public partial class Lecturers 
{ 
    [Key] 
    public int LecturerId { get; set; } 
    public string Lecturer { get; set; } 
} 

這是我CourseLecturers型號:

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; } 
} 

應該怎麼可能添加我的Courses類中的CourseLecturers類,然後嘗試像這樣訪問數據?但是,如果這有效,如何顯示數據,我是否在我的模型中創建一個新的DisplayClass,然後將該DisplayClass傳遞給視圖?

這是在控制我的索引方法:

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,它詳細解釋瞭如何使用創建具有多對多關係的數據模型in ASP.Net MVC

+0

問題是沒有建立關係,我的問題是顯示數據,因爲我的觀點由於某種原因重複了我有多個講師的課程。 – Marin

+0

你可以發佈視圖 –

+0

在那裏,我把它添加到帖子。 – Marin

0

這是隻讀使用。我將在數據庫中定義一個視圖,這將比EF更快,並創建一個只讀實體來訪問這些項目。