从多对多关系中获取和显示数据
本文关键字:显示 数据 获取 关系 | 更新日期: 2023-09-27 17:59:15
我使用的是.net mvc核心。我与3张表有很多对很多的关系:课程,讲师,课程讲师。(课程讲师为连接表)我想做的是显示一个课程条目的所有讲师,所以它就像一个有3列的表:Id、CourseName和讲师。我在获取数据然后显示数据时遇到了问题。关键是要显示某个科目的所有讲师(例如,如果有一个或多个讲师)。现在我不确定如何做到这一点。因为我的观点只会采用我的课程模式。我不确定如何通过EF访问讲师姓名。
在我看来,我应该从CourseLecturers中选择CourseId等于我的CourseId的所有条目,然后以某种方式连接我的CourserLecturers表(讲师id)中主键的另一部分的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; }
}
我是否应该在我的课程类中添加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
我想您正在寻找的是这里,它详细解释了如何在ASP中使用EF创建具有多对多关系的数据模型。Net MVC。