获取和显示多对多关系中的数据

时间:2016-07-30 14:06:43

标签: c# .net asp.net-mvc asp.net-core

我正在使用.net mvc核心。我与3个表有很多关系:课程,讲师,课程讲师。 (CourseLecturers是联结表) 我想要做的是向所有讲师展示一个课程入口,所以它就像一个包含3列的表:Id,CourseName和Lecturers。我有一个问题,即获取数据,然后显示它。它的目的是向所有讲师展示一个主题(例如,如果有一个或多个讲师)。现在我不确定如何实现这一目标。由于我的视图只会采用我的课程模型。我不确定如何通过EF访问讲师姓名。

据我所知,我应该选择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传递给视图?

这是我在控制器中的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

2 个答案:

答案 0 :(得分:0)

我认为您所寻找的是here,它详细解释了如何使用EF中的ASP.Net MVC创建包含多对多关系的数据模型。

答案 1 :(得分:0)

这是否只读。我在您的数据库中定义一个视图,它比EF快得多,并创建一个只读实体来访问这些项目。