[英]Map List<> with 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
?
是的,您需要告訴 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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.