3

我有两节课:

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“自动”将对象链接CustomerOrders

4

1 回答 1

0

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

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

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

就目前Customer而言,如果两者Customer都有CustomerDTO一个名为 的属性Orders,则您无需执行任何其他操作。只要您告诉 AutoMapper 在OrderandOrderDTOCustomerand之间进行映射,它就会在您映射时CustomerDTO自动映射您的。OrderCustomer

于 2013-05-14T19:10:53.463 回答