standard - C#automapper colecciones anidadas
imapper c# (2)
Tengo un modelo simple como este:
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; }
... ...
}
Lo que hago con Automapper es esto:
Mapper.CreateMap<Order, OrderDto>();
Mapper.CreateMap<OrderLine, OrderLineDto>();
Mapper.AssertConfigurationIsValid();
Se lanza una excepción que dice: "La propiedad OrderLineDtos en OrderDto no está asignada, agregue mapeo personalizado ..." Como usamos una sintaxis personalizada en nuestro dominio y en nuestro DomainDto, cómo puedo especificar que la colección OrderLineDtos en OrderDto corresponde a OrderLines en orden?
Gracias
Funciona de esta manera:
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();
Las colecciones anidadas funcionan, siempre y cuando los nombres coincidan. En sus DTO, tiene el nombre de su colección como "OrderLineDtos", pero en el objeto Order, es solo "OrderLines". Si elimina la parte "Dtos" de los nombres de propiedad OrderLineDtos y ParentOrderDto, todos deben coincidir.