地图列表<>使用Automapper?

时间:2013-05-14 16:28:40

标签: c# .net-3.5 automapper

我有两个班级:

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

我正在使用AutoMapper for .NET 3.5,目前在我的Application_StartUp中执行以下操作:

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

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

我试过了:

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

但找不到src.Orders

如果我确实需要同时拥有CreateMap个语句,那么AutoMapper会“自动”将对象Customer链接到Orders吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

Customer而言,如果CustomerCustomerDTO都有名为Orders的属性,则您无需执行任何其他操作。只要您告诉AutoMapper在OrderOrderDTO以及CustomerCustomerDTO之间进行映射,它就会在您映射{Order时自动映射Customer 1}}。