代码之家  ›  专栏  ›  技术社区  ›  Edward

嵌套项集合的自动映射器

  •  0
  • Edward  · 技术社区  · 8 年前

    我有以下模型:

    public class Order
    {
        public long OrderId { get; set; }
    
        public ICollection<Order_OrderItem> Order_OrderItems { get; set; }
    }
    
    public class Order_OrderItem
    {
        public long OrderId { get; set; }
    
        public virtual Order Order { get; set; }
    
        public int OrderItemId { get; set; }
    
        public virtual OrderItem OrderItem { get; set; }
    }
    

    我在下面创建DTO:

    public class OrderDto
    {
        public long OrderId { get; set; }
    
        public IEnumerable<OrderItemDto> OrderItems { get; set; }
    }
    

    我怎么能画地图 Order 到 OrderDto ?

    我有以下错误:

    configuration.CreateMap<Order, OrderDto>()
        .ForMember(desc => desc.OrderItems,
            opt => opt.MapFrom(src => src.Order_OrderItems));
    

    我检查了其他相关的问题,并从一个到另一个与map属性相关的建议,但是 OrderItems 是集合属性。我怎么能画出来?

    任何帮助都将不胜感激。

    更新

    更改如下配置:

    configuration.CreateMap<Order_OrderItem, OrderItemDto>();
    configuration.CreateMap<Order, OrderDto>()
        .ForMember(desc => desc.OrderItems,
            opt => opt.MapFrom(src => src.Order_OrderItems));
    

    这个 订单项目 在里面 订购 将 null 检查结果时:

    var result = ObjectMapper.Map<OrderDto>(order);
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   aaron    8 年前

    映射自 OrderItem 到 OrderItemDto :

    configuration.CreateMap<OrderItem, OrderItemDto>();
    

    映射自 Order 到 OrderDto :

    configuration.CreateMap<Order, OrderDto>()
        .ForMember(dest => dest.OrderItems,
            opt => opt.MapFrom(src => src.Order_OrderItems.Select(o => o.OrderItem)));
    
    推荐文章