@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?
  • Вопрос задан
  • 334 просмотра
Пригласить эксперта
Ответы на вопрос 1
virtual_hack2root
@virtual_hack2root
.NET Core, JS, DevOps
Никак, перестать использовать автомаппер не по назначению, в ForMember нельзя использовать кастомные скрипты, код, и или свойства второго уровня вложенности, а так-же LINQ выражения, содержащие код. Можно написать свой кастомный маппинг, но он не будет поддерживать оптимизацию времени компиляции, то есть будет выполняться в рантайме, как обычный код, и никаких преимуществ по сравнению с обычным кодом не будет, то есть кроме этого, еще читаемость такого кода будет ниже плинтуса.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы