自动映射器:展平

时间:2018-07-25 13:55:49

标签: c# .net-core automapper

我已经尝试了所有从Item类映射到ItemDto类的映射(基本上是扁平化的映射),但是我一直为ItemDto.NestedItemName获得null:

public class Item
{
    public NestedItem NestedItem{get;set;}
}

public class NestedItem
{
    public string Name{get;set;}
}

public class ItemDto
{
    public string NestedItemName{get;set;}
}

我本以为这会起作用:

CreateMap<NestedItem, ItemDto>()
                .ForMember(dest => dest.NestedItemName, opt => opt.MapFrom(src => src.Name));

,但它返回null。有任何想法吗? 我正在.Net Core 2.1应用中使用AutoMapper 7.0.1。

1 个答案:

答案 0 :(得分:2)

您使用了错误的映射。很有可能是将项目转换为dto,因此应该使用该地图创建地图

CreateMap<Item, ItemDto>()
    .ForMember(
        dest => dest.NestedItemName, 
        opt => opt.MapFrom(src => src.NestedItem.Name)
    );

来自评论

  

不需要自定义映射,默认的命名约定涵盖了