简体   繁体   English

带有嵌套子列表的 Automapper

[英]Automapper with nested child list

I have two classes below:我有以下两个类:

public class Module
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string ImageName { get; set; }
    public virtual ICollection<Page> Pages { get; set; }
}

public class ModuleUI
{
    public int Id { get; set; }
    public string Text { get; set; }
    public string ImagePath { get; set; }
    public List<PageUI> PageUIs { get; set; }
}

The mapping must be like this:映射必须是这样的:

Id -> Id
Name -> Text
ImageName -> ImagePath 
Pages -> PageUIs

How can I do this using Automapper?如何使用 Automapper 执行此操作?

You can use ForMember and MapFrom ( documentation ).您可以使用ForMemberMapFrom文档)。
Your Mapper configuration could be:您的 Mapper 配置可能是:

Mapper.CreateMap<Module, ModuleUI>()
    .ForMember(s => s.Text, c => c.MapFrom(m => m.Name))
    .ForMember(s => s.ImagePath, c => c.MapFrom(m => m.ImageName))
    .ForMember(s => s.PageUIs, c => c.MapFrom(m => m.Pages));
Mapper.CreateMap<Page, PageUI>();

Usage:用法:

var dest = Mapper.Map<ModuleUI>(
    new Module
    {
        Name = "sds",
        Id = 2,
        ImageName = "sds",
        Pages = new List<Page>
        {
            new Page(), 
            new Page()
        }
    });

Result:结果:

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM