Automapper中的嵌套集合映射

时间:2017-07-11 11:17:52

标签: c# nested automapper

我尝试使用automapper映射嵌套集合,并完成了基本的设置和配置。当我尝试做地图时,嵌套值将变为空。我试图关注几个帖子并整理一些东西。我希望列表具有层次结构而不是展平。对此有任何帮助都很棒。

来源实体:

public class OuterEntity
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<InnerEntity> InnerEntityList { get; set; }
}

public class InnerEntity
{
    public int InnerId { get; set; }
    public string InnerName { get; set; }
    public List<InnerMostEntity> InnerMostList { get; set; }
}

public class InnerMostEntity
{
    public int InnerMostId { get; set; }
    public string InnerMostName { get; set; }
    public DateTime ModifiedDate { get; set; }
} 

目标实体:

public class OuterEntityDTO
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<InnerEntity> InnerEntityList { get; set; }
}

public class InnerEntityDTO
{
    public int InnerId { get; set; }
    public string InnerName { get; set; }
    public List<InnerMostEntity> InnerMostList { get; set; }
}

public class InnerMostEntityDTO
{
    public int InnerMostId { get; set; }
    public string InnerMostName { get; set; }
    public DateTime ModifiedDate { get; set; }
}

控制器类:

public List<OuterEntityDTO> GetAll()
{

var outerEntityList = myRepo.GetAll(); //Type of List<OuterEntity>  

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<OuterEntity, OuterEntityDTO>().ReverseMap();
    cfg.CreateMap<InnerEntity, InnerEntityDTO>().ReverseMap();
    cfg.CreateMap<InnerMostEntity, InnerMostEntityDTO>().ReveseMap();
});

config.AssertConfigurationIsValid();

var innerMostDTO = Mapper.Map<List<OuterEntity>,List<OuterEntityDTO>>(outerEntityList);

//The inner list at first level itself is null.
return innerMostDTO;
}

我试图在DOT NET Core中实现这一目标。 Autommaper版本是6.1.1

1 个答案:

答案 0 :(得分:1)

我认为你应该在DTO课程中有一个错误的类层次结构,就像你有

一样
public List<InnerMostEntity> InnerMostList { get; set; }

在公共类InnerEntityDTO中,您应该将其写为

public List<InnerMostEntityDTO> InnerMostList { get; set; }
相关问题