Правильное отображение отношений между родителями и детьми - PullRequest
0 голосов
/ 06 февраля 2020

Рассмотрим следующий код:

public class ParentDto
{
    public int Id { get; set; }
}

public class ChildDto
{
    public int Id { get; set; }

    public int ParentId { get; set; }
}

public class Request
{
    public List<ParentDto> Parents { get; set; }

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

Мы намеренно решили предоставить ChildDto свойство с именем ParentId вместо объекта ParentDto, чтобы мы могли (надеюсь) предотвратить возможность вызывающих абонентов чтобы предоставить одному и тому же ParentDto различные значения (свойства значения для краткости опущены). Наша цель состоит в том, чтобы наша система отображения сопоставила эти DTO со следующими классами указанным c способом:

public class Input
{
    public List<Parent> Parents { get; set; }

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

public class Parent
{
    public int Id { get; set; }
}

public class Child
{
    public int Id { get; set; }

    public Parent Parent { get; set; }
}

Мы хотели бы, чтобы отображение создало дерево объектов, такое, что любые два объекта Child чьи родители имеют одинаковое свойство Id, фактически являются одним и тем же точным объектом (для справки). В настоящее время мы используем Automapper и не смогли найти решение или документацию, которая точно соответствует нашему желанию. Самым большим препятствием, по-видимому, является то, что когда мы пишем профиль сопоставления для ChildDto в Child, у нас нет никаких знаний о профиле сопоставления для Request в Input, в котором мы ожидаем поиск коллекции из Parent объектов из.

Это что-то, что может быть аккуратно реализовано с Automapper, или это потребует много лесов или обходных путей? Было бы лучше полностью избежать Automapper для этого сценария? Заранее спасибо!

...