如何使用AutoMapper映射子列表对象

6

我有两个对象:Parent 和 ParentDTO:

    public class Parent
    {
        public int ParentID { get; set;}
        public string ParentCode { get; set; }
        public List<Child> ListChild { get; set; }
    }

    public class Child
    {
        public int ChildID { get; set; }
        public string ChildCode { get; set; }
    }

    public class ParentDTO
    {
        public int ParentID { get; set; }
        public string ParentCode { get; set; }
        public List<ChildDTO> ListChild { get; set; }
    }

    public class ChildDTO
    {
        public int ChildID { get; set; }
        public string ChildCode { get; set; }
    }

我想使用AutoMapper将Parent对象中的数据映射到ParentDTO对象(ListChild中的所有数据都必须传输到ListChildDTO)。有谁可以帮助我。谢谢。
2个回答

10

您应该只需创建顶层映射,AutoMapper将自动映射列表。

//Create Mappings
Mapper.CreateMap<Parent, ParentDto>();
Mapper.CreateMap<Child, ChildDto>();

//Map
Mapper.Map<Parent, ParentDto>();

请查看GitHub上AutoMapper项目站点的Wiki页面。 http://docs.automapper.org/en/stable/Lists-and-arrays.html

@quangho 你能将这个标记为正确答案,以帮助可能遇到同样问题的其他人吗? - GetFuzzy

2
在使用map函数之前,请按照以下方式修改您的代码。
public class Parent
{
    public Parent()
    {
        this.ListChild = new List<Child>();
    }
    public int ParentID { get; set; }
    public string ParentCode { get; set; }
    public List<Child> ListChild { get; set; }
}

public class Child
{
    public int ChildID { get; set; }
    public string ChildCode { get; set; }
    public Parent Parent { get; set; }
}

public class ParentDTO
{
    public ParentDTO()
    {
        ListChild = new List<ChildDTO>();
    }
    public int ParentID { get; set; }
    public string ParentCode { get; set; }
    public List<ChildDTO> ListChild { get; set; }
}

public class ChildDTO
{
    public int ChildID { get; set; }
    public string ChildCode { get; set; }
    public ParentDTO ParentDTO { get; set; }
}

然后映射。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接