我正在使用.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
答案 0 :(得分:0)
我认为您所寻找的是here,它详细解释了如何使用EF中的ASP.Net MVC创建包含多对多关系的数据模型。
答案 1 :(得分:0)
这是否只读。我在您的数据库中定义一个视图,它比EF快得多,并创建一个只读实体来访问这些项目。