Il metodo Include () di solito dovrebbe restituire l'elenco di oggetti specifici ma stranamente, restituisce tutti i suoi oggetti nidificati senza nemmeno usare ThenInclude (). Come devo bloccare questi oggetti nidificati?
return Db.Courses.Include(x => x.Program).ToList();
Ciò dovrebbe restituire l'elenco di corsi con oggetti programma ma restituisce anche gli oggetti corso presenti anche nell'oggetto Programmi. Come posso interrompere questo ciclo?
Corsi Classi
public Courses()
{
CourseCoReqsCoRequisiteCourse = new HashSet<CourseCoReqs>();
CourseCoReqsCourse = new HashSet<CourseCoReqs>();
CourseGroupCourses = new HashSet<CourseGroupCourses>();
CoursePreReqsCourse = new HashSet<CoursePreReqs>();
CoursePreReqsPreRequisiteCourse = new HashSet<CoursePreReqs>();
CurriculumCoursePrerequisite = new HashSet<CurriculumCoursePrerequisite>();
EquivalenceCourses = new HashSet<EquivalenceCourses>();
SemesterCourses = new HashSet<SemesterCourses>();
StudentCourses = new HashSet<StudentCourses>();
}
public int CourseId { get; set; }
public string CourseNumber { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public int Credits { get; set; }
public bool? NormallyOfferedFall { get; set; }
public bool? NormallyOfferedSpring { get; set; }
public bool? NormallyOfferedSummer { get; set; }
public bool? NormallyOfferedWinterInt { get; set; }
public bool? NormallyOfferedSpringInt { get; set; }
public bool? NormallyOfferedSummerInt { get; set; }
public bool? IsActive { get; set; }
public bool? IsElective { get; set; }
public int ProgramId { get; set; }
public string Rules { get; set; }
public virtual Programs Program { get; set; }
public virtual ICollection<CourseCoReqs> CourseCoReqsCoRequisiteCourse { get; set; }
public virtual ICollection<CourseCoReqs> CourseCoReqsCourse { get; set; }
public virtual ICollection<CourseGroupCourses> CourseGroupCourses { get; set; }
public virtual ICollection<CoursePreReqs> CoursePreReqsCourse { get; set; }
public virtual ICollection<CoursePreReqs> CoursePreReqsPreRequisiteCourse { get; set; }
public virtual ICollection<CurriculumCoursePrerequisite> CurriculumCoursePrerequisite { get; set; }
public virtual ICollection<EquivalenceCourses> EquivalenceCourses { get; set; }
public virtual ICollection<SemesterCourses> SemesterCourses { get; set; }
public virtual ICollection<StudentCourses> StudentCourses { get; set; }
}
Classe di programmi:
public partial class Programs
{
public Programs()
{
Courses = new HashSet<Courses>();
Curricula = new HashSet<Curricula>();
People = new HashSet<People>();
ProgramCourseGroups = new HashSet<ProgramCourseGroups>();
Roles = new HashSet<Roles>();
}
public int ProgramId { get; set; }
public int DepartmentId { get; set; }
public string ProgramCode { get; set; }
public string ProgramName { get; set; }
public bool? IsActive { get; set; }
public bool? IsMinor { get; set; }
public virtual Departments Department { get; set; }
public virtual ICollection<Courses> Courses { get; set; }
public virtual ICollection<Curricula> Curricula { get; set; }
public virtual ICollection<People> People { get; set; }
public virtual ICollection<ProgramCourseGroups> ProgramCourseGroups { get; set; }
public virtual ICollection<Roles> Roles { get; set; }
}
Ciò dovrebbe restituire l'elenco di corsi con oggetti programma ma restituisce anche gli oggetti corso presenti anche nell'oggetto Programmi. Come posso interrompere questo ciclo?
Disattiva il rilevamento delle modifiche e, ovviamente, assicurati che il caricamento lento sia disabilitato. PER ESEMPIO
return Db.Courses
.AsNoTracking()
.Include(x => x.Program)
.ToList();
Change Tracker corregge le proprietà di navigazione mentre carica gli oggetti.