获取并显示来自多对多关系的数据
问题描述:
我正在使用.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
答
这是只读使用。我将在数据库中定义一个视图,这将比EF更快,并创建一个只读实体来访问这些项目。
问题是没有建立关系,我的问题是显示数据,因为我的观点由于某种原因重复了我有多个讲师的课程。 – Marin
你可以发布视图 –
在那里,我把它添加到帖子。 – Marin