2016-07-30 77 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更快,并创建一个只读实体来访问这些项目。