Сложные коллекции С# 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 в порядке?
Спасибо
Ответы
Ответ 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, все должно совпадать.