簡體   English   中英

AutoMapper - map 如何將復雜對象轉換為更簡單的 model

[英]AutoMapper - How map complex objects to simpler model

我想要ItineraryModel class 的 map Origin.CityIdOrigin.StateId屬性到Itinerary class 的OriginCityIdOriginStateId屬性。

例如: Itinerary itinerary = Mapper.Map<Itinerary>(ItineraryModel);

我的視圖模型

public class ItineraryModel : BaseModel
{
    public int OriginCityId { get; set; }
    public int OriginStateId { get; set; }
    public bool Published { get; set; }
}

我的實體

public class Itinerary : BaseEntity
{
    public City Origin { get; set; }
    public bool Published { get; set; }
}

我嘗試過的映射

public class MappingProfile : Profile
{
    public MappingProfile()
    {
        CreateMap<ItineraryModel, Itinerary>()
            .ForPath(x => x.Origin.CityId, opt => opt.MapFrom(src => src.OriginCityId))
            .ForPath(x => x.Origin.StateId, opt => opt.MapFrom(src => src.OriginStateId))
            .ReverseMap();
    }
}

我也想.ReverseMap()但找不到正確的語法。

您需要添加兩個映射以映射到Itenerary

CreateMap<ItineraryModel, City>()
            .ForMember(city => city.CityId, expression => expression.MapFrom(itineraryModel => itineraryModel.OriginCityId))
            .ForMember(city => city.StateId, expression => expression.MapFrom(itineraryModel => itineraryModel.OriginStateId));

CreateMap<ItineraryModel, Itinerary>()
            .ForMember(itinerary => itinerary.Origin, expression => expression.MapFrom(itineraryModel => itineraryModel));

同樣,如果需要,您可以手動定義反向映射。

順便說一句,作者不推薦ReverseMap()

https://jimmybogard.com/automapper-usage-guidelines/

暫無
暫無

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

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