Entity Framework - ASP. NET Функция базового включения возвращает вложенные отношения - PullRequest
0 голосов
/ 19 марта 2020

Метод Include () обычно должен возвращать список указанных объектов c, но, как ни странно, он возвращает все свои вложенные объекты, даже не используя ThenInclude (). Как мне заблокировать эти вложенные объекты?

return Db.Courses.Include(x => x.Program).ToList();

Это должно вернуть список курсов с программными объектами, но также возвращает объекты курсов, которые также присутствуют в объекте «Программы». Как мне сломать этот л oop?

Курсы Класс

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; }
}

Программы:

 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; }
}

1 Ответ

0 голосов
/ 19 марта 2020

Это должно вернуть список курсов с программными объектами, но также возвращает объекты курсов, которые также присутствуют в объекте Программы. Как это сделать? L oop?

Выключите Отслеживание изменений и, конечно, убедитесь, что Lazy Loading отключен. EG

return Db.Courses
         .AsNoTracking()
         .Include(x => x.Program)
         .ToList();

Отслеживание изменений фиксирует свойства навигации при загрузке объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...