次に、モデルを次のように変更する必要があります。
public class Student
{
public int StudentId {get;set;}
public string StudentFirstName {get;set;}
public string StudentLastName {get;set;}
public virtual ICollection<StudentSchedule> StudentSchedules {get;set;}
}
class StudentSchedule
{
public int StudentScheduleId {get;set;}
public int StudentId {get;set;}
public string ClassName {get;set;}
public virtual Student Student {get;set;}
}
次に、クエリは次のようになります。
var students = db.Students
.Include(s=>s.StudentSchedules)
.Where(studentBuilder)
.ToList();
述語ビルダーなし:
var students = db.Students
.Include(s=>s.StudentSchedules)
.Where(s=>s.StudentLastName == "Smith")
.ToList();
私の個人的な好みは、それが外部プロパティでない限り、プロパティでエンティティ タイプを繰り返さないことです。そのため、私のモデルは次のようになります。
public class Student
{
public int Id {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
public virtual ICollection<StudentSchedule> Schedules {get;set;}
}
class StudentSchedule
{
public int Id {get;set;}
public int StudentId {get;set;}
public string ClassName {get;set;}
public virtual Student Student {get;set;}
}
もちろん、「サブジェクト」(名前、前提条件など)、「クラス」(サブジェクト、教室、スケジュール、スタッフ)、「学生」(名、姓、クラス)、「スタッフ」を含む、より詳細なモデルが必要になる場合があります。 " (FirstName、LastName、JobTitle、Classes) および "Schedules" (曜日、開始時刻、終了時刻、Classes)。