简体   繁体   English

AutoMapper用于嵌套项目集合

[英]AutoMapper for nested item collection

I have models below: 我有以下型号:

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; }
}

And I create DTO below: 我在下面创建DTO:

public class OrderDto
{
    public long OrderId { get; set; }

    public IEnumerable<OrderItemDto> OrderItems { get; set; }
}

How could I map Order to OrderDto ? 如何将Order映射到OrderDto

I got error with below: 我有以下错误:

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

I checked other related issues, and suggestions are related with map property from one to another, but my OrderItems is a collection property. 我检查了其他相关问题,并且建议与地图属性之间相互关联,但是我的OrderItems是集合属性。 How could I map it? 我该如何映射?

Any help would be appreciated. 任何帮助,将不胜感激。

Update 更新

Change configuration like below: 更改配置,如下所示:

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

The OrderItems in OrderDto will be null when checking the result: 检查结果时, OrderDtoOrderItems将为null

var result = ObjectMapper.Map<OrderDto>(order);

Map from OrderItem to OrderItemDto : OrderItem映射到OrderItemDto

configuration.CreateMap<OrderItem, OrderItemDto>();

Map from Order to OrderDto : Order映射到OrderDto

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM