【问题标题】:Getting and displaying data from many to many relationship从多对多关系获取和显示数据
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 问题不是建立关系,我的问题是显示数据,因为我的视图出于某种原因重复了我有多个讲师的课程。
      • 你能发一下视图吗
      • 那里,我把它添加到帖子中了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      相关资源
      最近更新 更多