【发布时间】:2016-07-30 14:06:42
【问题描述】:
我正在使用 .net mvc 核心。我与 3 个表有多对多关系:课程、讲师、课程讲师。 (CourseLecturers 是连接表) 我想要做的是显示一个课程条目的所有讲师,所以它就像一个包含 3 列的表格:Id、CourseName 和讲师。而且我在获取数据然后显示它时遇到了问题。 它的重点是显示一个主题的所有讲师(例如,如果有一个或多个讲师)。现在我不确定如何实现这一目标。因为我的视图只会采用我的课程模型。而且我不确定如何通过 EF 访问讲师姓名。
据我所见,我应该从 CourseLecturers 中选择所有 Entries,其中 Course 的 ID 等于我的 CourseId,然后以某种方式连接我的 CourseLecturers 表中主键的另一部分的 ID (LecturerId) 并选择所有的讲师都拥有我的钥匙。在这一点上,我不确定如何选择数据,以及如何显示它。
这是我的课程模型:
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
【问题讨论】:
标签: c# .net asp.net-mvc asp.net-core