Правильно ли следующее дерево SchoolContext? - PullRequest
0 голосов
/ 04 июля 2019

Предположим, у нас есть:

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)
                    |__ ...

Насколько я знаю:

  • Сущность Student является экземпляром класса Student.

  • исходные значения являются начальными значениями этого экземпляра после того, как мы получим данные,как .Find() метод.

  • текущие значения являются значениями после того, как мы изменим.

  • состояние сообщает текущее состояние объекта.

1 Ответ

0 голосов
/ 04 июля 2019

Если ты хочешь иметь отношения между учителем ученика, то занимайся многими многими.В примере 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 });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...