C#automapper嵌套集合

Raf*_*aeu 21 c# 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; }
   ... ...
}
Run Code Online (Sandbox Code Playgroud)

我用Automapper做的是这样的:

    Mapper.CreateMap<Order, OrderDto>();
    Mapper.CreateMap<OrderLine, OrderLineDto>();
    Mapper.AssertConfigurationIsValid();
Run Code Online (Sandbox Code Playgroud)

它抛出一个异常,说:"OrderDto中的OrderLineDtos属性未映射,添加自定义映射......"当我们在Domain和DomainDto中使用自定义语法时,我如何指定OrderDto中的OrderLineDtos集合对应于OrderLines有序吗?

谢谢

Raf*_*aeu 22

它以这种方式工作:

    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();
Run Code Online (Sandbox Code Playgroud)

  • 您是否知道您可以编辑原始帖子,无论您的声誉如何?在原始问题中保留任何信息更新总是好的. (6认同)

Jim*_*ard 8

只要名称匹配,嵌套集合就可以工作.在您的DTO中,您的集合名称为"OrderLineDtos",但在Order对象中,它只是"OrderLines".如果删除OrderLineDtos和ParentOrderDto属性名称的"Dtos"部分,它应该全部匹配.