Структура сущности рекурсивно населяет детей DTO - PullRequest
0 голосов
/ 15 марта 2020

Итак, у меня есть объект данных, который я хочу заполнить на основе таблицы из моей базы данных. В настоящее время я делаю следующее:

public Task<IEnumerable<DataDTO>> Loadreferences(int Id)
{
    IEnumerable <DataDTO> DTOList = _context.Data.Where(p => p.Id == Id).Select(p => new DataDTO
    {
        Id = p.Id,
        Children = p.Children
    });
    return Task.FromResult(DTOList);
}

Исходная таблица в моей базе данных называется Data и содержит много других вещей, которые я оставил для этого вопроса. Тем не менее, смысл в создании этого объекта данных заключается в том, чтобы в основном уменьшить полезную нагрузку на сервер (так как он оставляет некоторые столбцы и преобразовывает другие)

Я могу успешно заполнить свой DTO, но у меня проблема с заполнением ребенок. Естественно, это потому, что список потомков указывает на объекты типа Data, и я пытаюсь использовать его в типе DataDTO

. Поэтому я получаю сообщение об ошибке, в котором не могу преобразовать список Data объектов в список DataDTO объектов.

Нужно ли мне все oop, чтобы исправить это для меня, или я могу сделать это простым запросом?

1 Ответ

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

Итак, оказалось, что это было относительно легко исправить:

foreach (DataDTO data in datas)
{
    data.Children = datas.Where(p => p.ParentId == data.Id).ToList();
}

Делая следующее, мне не нужно было рекурсивно добавлять новые объекты в мой оператор select или делать что-то вроде хранимой процедуры.

l oop просто проверяет, имеет ли какой-либо элемент в списке текущий зацикленный элемент как parentId, после чего он добавляется к свойству children.

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