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
?
是的,您需要告诉AutoMapper每个映射。它不会帮你猜。所以,如果一个OrderDTO
应该映射到一个Order
,你必须告诉AutoMapper。如果需要,您还必须指定反向关系(即Order
应该映射到OrderDTO
)。
换句话说,对于双向映射,您需要:
Mapper.CreateMap<Order, OrderDTO>();
Mapper.CreateMap<OrderDTO, Order>();
就Customer
而言,如果Customer
和CustomerDTO
都有一个名为Orders
的属性,则不需要做任何其他操作。只要你告诉AutoMapper在Order
和OrderDTO
以及Customer
和CustomerDTO
之间进行映射,当你映射Customer
时,它会自动映射你的Order
。