[英]Automapper - map list of complex object to list of properties
我有以下DomainObject類:
public class MyDomainObj
{
public CUSTOMER customer {get;set;} // This is database entity
public ORDER order {get;set;}
}
我的DTO如下所示:
public class MyDTO
{
public string custId{get;set;}
public strinf orderId{get;set;}
}
假設在CUSTOMER
表中,我有一個名稱為: customer_id
的屬性,與ORDER
表的order_id
相同
這是我的自動映射器配置:
m.CreateMap<CUSTOMER, MyDTO>().ForMember(d => d.custId, o => o.MapFrom(s => s.customer_id));
m.CreateMap<ORDER, MyDTO>().ForMember(d => d.orderId, o => o.MapFrom(s => s.order_id));
我為mapper寫了一個擴展方法以便工作:
public static class ExtensionAutoMapper
{
public static TDestination Map<TSource, TDestination>(this TDestination destination, TSource source)
{
return Mapper.Map(source, destination);
}
}
用法是:
var response = Mapper.Map<MyDTO>(myDomainObj.customer)
.Map(myDomainObj.order);
這很好。
題:
這些東西
var response = Mapper.Map<List<MyDomainObj>, List<MyDTO>>(myDomainObj);
編輯:如果它們具有相同的名稱,我想自動將數據庫實體中的字段映射到dto屬性。
@jmoerdyk提供的答案,解決了我的問題。 但是,采用這種方法,我必須將數據庫實體的所有字段都映射到dto,即使它們具有相同的名稱。
您只需提供從MyDomainObj
到MyDto
的映射,它就能夠處理映射集合:
Mapper.CreateMap<MyDomainObj,MyDTO>()
.ForMember(d => d.custId, o => o.MapFrom(s => s.customer.customer_id))
.ForMember(d => d.orderId, o => o.MapFrom(s => s.order.order_id));
然后像調用它一樣調用它(假定myDomainObj
是List<MyDominObj>
):
var response = Mapper.Map<List<MyDomainObj>, List<MyDTO>>(myDomainObjList);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.