Map List<> with Automapper?

本文关键字:Automapper with gt lt Map List | 更新日期: 2023-09-27 18:13:25

我有两个类:

public class CustomerDTO
{
public string Name {get;set;}
public List<Order> Orders {get;set;}
}
public class OrderDTO
{
public string Name {get;set;}
public string Description {get;set;}
public decimal Cost{get;set;}
}

我正在使用。net 3.5的AutoMapper,目前在我的Application_StartUp中做以下操作:

Mapper.CreateMap<Customer, CustomerDTO>();
Mapper.CreateMap<Order,OrderDTO>();

这是一个简化的例子,因为我的DTO属性与我的实体属性不同,所以我使用了ForMember,但我不清楚如何将Orders映射到Customer:

我试着:

Mapper.CreateMap<Customer, CustomerDTO()
.ForMember(dest => dest.Orders, opt=> opt.MapFrom(src=>src.Orders));

但是没有找到src.Orders

如果我确实需要两个CreateMap语句,AutoMapper是否"自动"将对象Customer链接到Orders ?

Map List<> with Automapper?

是的,您需要告诉AutoMapper每个映射。它不会帮你猜。所以,如果一个OrderDTO应该映射到一个Order,你必须告诉AutoMapper。如果需要,您还必须指定反向关系(即Order应该映射到OrderDTO)。

换句话说,对于双向映射,您需要:

Mapper.CreateMap<Order, OrderDTO>();
Mapper.CreateMap<OrderDTO, Order>();

Customer而言,如果CustomerCustomerDTO都有一个名为Orders的属性,则不需要做任何其他操作。只要你告诉AutoMapper在OrderOrderDTO以及CustomerCustomerDTO之间进行映射,当你映射Customer时,它会自动映射你的Order