@Saharman

Как я могу конвертировать вложенный объект в Automapper?

Добрый вечер! У меня есть два класса, которые связаны отношением многие-ко многим. Структура вот такая:
class A
{
     public class A
    {
        public Guid Id { get; set; }

        public List<AB> AB { get; set; }
    }

    public class B
    {
        public Guid Id { get; set; }

        public List<AB> AB { get; set; }
    }

    public class AB
    {
        public Guid AId { get; set; }

        public Guid BId { get; set; }

        public A A { get; set; }

        public B B { get; set; }

        public string Status { get; set; }
    }

    public class ADto
    {
        public Guid Id { get; set; }

        public List<BDto> B { get; set; }

        public string Status { get; set; }
    }

    public class BDto
    {
        public Guid Id { get; set; }

        public List<ADto> A { get; set; }

        public string Status { get; set; }
    }
}

В проекте хочу использовать Automapper. Как я могу объяснить, что, например, я для объекта ADto, должен из связующих таблиц взять все объекты B, а еще из связующей таблицы взять статус для B и поместить его в BDto? То есть, по идее, в ForMember я могу указать, что я сопоставляю списку B объекты B из связующих таблиц, но как я могу в настройке Automapper объяснить, что я хочу конвертировать еще эту B в BDto с помощью, опять же, automapper?
  • Вопрос задан
  • 386 просмотров
Пригласить эксперта
Ответы на вопрос 1
virtual_hack2root
@virtual_hack2root
.NET Core, JS, DevOps
Никак, перестать использовать автомаппер не по назначению, в ForMember нельзя использовать кастомные скрипты, код, и или свойства второго уровня вложенности, а так-же LINQ выражения, содержащие код. Можно написать свой кастомный маппинг, но он не будет поддерживать оптимизацию времени компиляции, то есть будет выполняться в рантайме, как обычный код, и никаких преимуществ по сравнению с обычным кодом не будет, то есть кроме этого, еще читаемость такого кода будет ниже плинтуса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы