首页 > 解决方案 > SchoolContext 的以下树是否正确?

问题描述

假设我们有:

public class Student
{
    public int StudentID { get; set; }
    public string Name { get; set; }
}
public class Teacher
{
    public int TeacherID { get; set; }
    public string Name { get; set; }
}
public SchoolContext : DbContext
{
    public DbSet<Student> Students { get; set; }
    public DbSet<Teacher> Teachers { get; set; }
}

将其理解为以下树是否正确?

SchoolContext
        |
        |__ DbSet<Student>
        |           |__ An entry1 (includes an Student entity, original values, current values, state of the entity)
        |           |__ An entry2 (includes an Student entity, original values, current values, state of the entity)
        |           |__ ...
        |
        |__ DbSet<Teacher>
                    |__ An entry1 (includes an Teacher entity, original values, current values, state of the entity)
                    |__ An entry2 (includes an Teacher entity, original values, current values, state of the entity)
                    |__ ...

我所知道的:

标签: .netentity-framework

解决方案


如果你想在学生老师之间建立关系,那么处理多对多的关系。示例 1 老师可以有很多学生,一个学生可以有很多老师,所以这将是多对多的关系。

这种情况下创建另一个类

class TeacherStudent
{
    public int StudentID { get; set; }
    public Student Student { get; set; }


    public int TeacherID { get; set; }
    public Teacher Teacher { get; set; }
}

public class Student
{
    public int StudentID { get; set; }
    public string Name { get; set; }
    public List<TeacherStudent> TeacherStudents { get; set; }
}
public class Teacher
{
    public int TeacherID { get; set; }
    public string Name { get; set; }
    public List<TeacherStudent> TeacherStudents { get; set; }
}

并在您的数据库上下文类中覆盖以下方法,因此 TeacherStudent 将成为 FK 关系。

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TeacherStudent>()
            .HasKey(s => new { s.TeacherID, s.StudentID });
    }

推荐阅读