EntityFramework получает рекурсивные значения - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть следующие классы:

public class Speciality 
{

[Required]
public virtual string Name { get; set; }

public virtual string Key { get; set; }

public virtual string Image { get; set; }

public virtual int? ParentChildrenId { get; set; }

[ForeignKey("ParentChildrenId")]
public List<Speciality> Children { get; set; }}
 }
public class Category
{

    [Required]
    public virtual string Name { get; set; }

    [Required]
    public virtual string Key { get; set; }

    public virtual string Image { get; set; }

    public List<Speciality> Specialities { get; set; }

}

public class CreateOrEditCategoryDto
{

    [Required]
    public string Name { get; set; }

    [Required]
    public string Key { get; set; }     

    public string Image { get; set; }

    public List<CreateOrEditSpecialityDto> Specialities { get; set; }

}

public class CreateOrEditSpecialityDto : EntityDto<int?>
{
    [Required]
    public string Name { get; set; }

    public string Key { get; set; }

    public string Image { get; set; }

    public List<SpecialityDto> Children { get; set; }
}

Я пытаюсь получить значения всех подспеций дерева.

---- Категория 1

- Специальность 1

   -- Speciality 2

         --Speciality 3

---- Категория 2

Моя проблема в том, что я не получаю все специальности в подузле специальности 2. Как я могу получить всеДочерние узлы заполнены по специальности 2 детей?

Остальные заполнены хорошо.Моя база данных заполнена правильно, чтобы показать дерево.

Мой код ниже:

var categories = _categoryRepository.GetAll().Include(e => e.Specialities);


var categoriesDtos = (from o in categories
select new CreateOrEditCategoryDto()
{Name = o.Name,             
Id = o.Id,
Key = o.Key,
Image = o.Image,
Specialities = (from s in o.Specialities
select new CreateOrEditSpecialityDto()
{
   Id = s.Id,
   Key = s.Key,
   Children = ObjectMapper.Map<List<SpecialityDto>>(s.Children)
}).ToList()
}).ToList();
...