У меня есть классы:
public class Subject
{
[Key]
public int SubjectID { get; set; }
public string SubjectName { get; set; }
public virtual ICollection<Teacher> Teachers { get; set; }
}
и
public class Teacher
{
[Key]
public int TeacherID { get; set; }
public string TeacherName { get; set; }
public virtual ICollection<Subject> Subjects { get; set; }
}
Итак, я создал отношение многие ко многим между двумя таблицами, и EF автоматически создаст таблицу соединений:
SubjectTeachers:
PK SubjectID
PK TeacherID
Мой вопрос: как мне сказать EF, как связать значения внутри таблиц?
Пример:
SubjectID = 1;SubjectName = Math;
SubjectID = 2;SubjectName = Биология;
TeacherID = 1;TeacherName = MathTeacher;
TeacherID = 2;TeacherName = MathTeacher2;
TeacherID = 3;TeacherName = BiologyTeacher;
Как я могу указать в DbInitializer при заполнении данных, что я хочу связать тему соответствия с учителями математики?
Редактировать: Метод семени
protected override void Seed(SchoolContext context)
{
GetTeachers().ForEach(t => context.Teachers.Add(t));
GetSubjects().ForEach(s => context.Subjects.Add(s));
}
private static List<Subject> GetSubjects()
{
var subjects = new List<Subject> {
new Subject
{
SubjectID = 1,
SubjectName = "Math"
},
new Subject
{
SubjectID = 2,
SubjectName = "Biology"
},
new Subject
{
SubjectID = 3,
SubjectName = "English"
},
};
return subjects;
}
private static List<Teacher> GetTeachers()
{
var teachers = new List<Teacher> {
new Teacher
{
TeacherID = 1,
TeacherName = "Math Teacher",
TeacherOffice = "A007",
},
new Teacher
{
TeacherID = 2,
TeacherName = "Math Teacher 2",
TeacherOffice = "A008",
},
new Teacher
{
TeacherID = 3,
TeacherName = "Biology Teacher",
TeacherOffice = "A009",
},
};
return teachers;
}