簡體   English   中英

使用 AutoMapper 如何在子集合中使用父屬性?

[英]Using AutoMapper how do I use a parent property in a child collection?

使用 AutoMapper 如何在子集合中使用父屬性?

我想映射這個類:

public class ParentModel
{

    public int Id { get; set; }

    public string Test { get; set; }

    public ICollection<ChildModel> Children { get; set; }

}

對這個類:

public class ParentDTO
{
    public int Id { get; set; }

    public string Test { get; set; }

    public ICollection<ChildDTO> Children { get; set; }

}

並具有以下映射:

    CreateMap<ParentModel, ParentDTO>()
            .ForMember(d => d.Children , opt => opt.MapFrom(s => s.Children))

    ;

    CreateMap<ChildModel, ChildDTO>()
    ;   

ChildDTO 類有一個名為Test的屬性,該值需要來自名為TestParentModel類屬性

public class ChildDTO
{

    public int Id { get; set; }

    public string Name { get; set; }

    //Take Me From The Parent Class
    public string Test { get; set; }

}

我在映射中指定什么來使之成為現實?

我想在代碼中使用的是

var dto = Maper.Map<ParentDTO>(parentModel);

並且該 DTO 將包含從父級映射的 Test 字段的子 DTO。

都整理好了。

最后走上了 Custom Value Resolver 路線。

public class MyCustomResolver : IValueResolver<ParentModel, ParentDTO, ICollection<ChildDTO>>
{
    public ICollection<ChildDTO> Resolve(ParentModel source, ParentDTO destination, ICollection<ChildDTO> destMember, ResolutionContext context)
    {
        return source.Children.Select(s => new ChildDTO
        {

            Id = s.Id,
            Name = s.Name,
            Test = source.Test


        }).ToList();

    }
}       


CreateMap<ParentModel, ParentDTO>()
       .ForMember(dest => dest.Children, opt => opt.ResolveUsing<MyCustomResolver>());
;

暫無
暫無

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

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