AutoMapper для коллекции вложенных элементов - PullRequest
0 голосов
/ 03 июня 2018

У меня есть модели ниже:

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

Я проверил другие связанные проблемы, и предложения связаны со свойством карты от одного к другому, но мой OrderItems является свойством коллекции.Как я могу отобразить это?

Любая помощь будет оценена.

Обновление

Измените конфигурацию, как показано ниже:

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

OrderItems inOrderDto будет null при проверке результата:

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

1 Ответ

0 голосов
/ 03 июня 2018

Карта от 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)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...