簡體   English   中英

使用 Automapper 映射列表<>?

[英]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而言,如果CustomerCustomerDTO都有一個名為Orders的屬性,那么您不需要做任何其他事情。 只要您告訴 AutoMapper 在OrderOrderDTO以及CustomerCustomerDTO之間進行映射,它就會在您映射Customer時自動映射您的Order

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM