Подтвердить что ты не робот

Сложные коллекции С# Automapper

У меня есть простая модель, подобная этой:

public class Order{
   public int Id { get; set; }
   ... ...
   public IList<OrderLine> OrderLines { get; set; }
}

public class OrderLine{
   public int Id { get; set; }
   public Order ParentOrder { get; set; }
   ... ...
}

Что я делаю с Automapper, это:

    Mapper.CreateMap<Order, OrderDto>();
    Mapper.CreateMap<OrderLine, OrderLineDto>();
    Mapper.AssertConfigurationIsValid();

Выбрасывает исключение, в котором говорится: "Свойство OrderLineDtos в OrderDto не отображается, добавляет настраиваемое сопоставление..." Поскольку мы используем собственный синтаксис в нашем домене и в нашем DomainDto, как я могу указать, что коллекция OrderLineDtos в OrderDto соответствует OrderLines в порядке?

Спасибо

4b9b3361

Ответ 1

Он работает следующим образом:

    Mapper.CreateMap<Order, OrderDto>()
        .ForMember(dest => dest.OrderLineDtos, opt => opt.MapFrom(src => src.OrderLines));
    Mapper.CreateMap<OrderLine, OrderLineDto>()
        .ForMember(dest => dest.ParentOrderDto, opt => opt.MapFrom(src => src.ParentOrder));
    Mapper.AssertConfigurationIsValid();

Ответ 2

Вложенные коллекции работают, пока имена совпадают. В ваших DTO у вас есть имя вашей коллекции как "OrderLineDtos", но в объекте Order это просто "OrderLines". Если вы удалите часть "Dtos" имен свойств OrderLineDtos и ParentOrderDto, все должно совпадать.