【问题标题】:Automapper: FlatteningAutomapper:展平
【发布时间】:2018-07-25 13:55:49
【问题描述】:

我已经尝试了从 Item 类映射到 ItemDto 类的所有方法(基本上是一个展平的映射),但我不断得到 ItemDto.NestedItemName 的空值:

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));

但它返回空值。有任何想法吗? 我在 .Net Core 2.1 应用程序中使用 AutoMapper 7.0.1。

【问题讨论】:

标签: c# .net-core automapper


【解决方案1】:

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

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

来自 cmets

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

【讨论】:

  • 不需要自定义映射,默认命名约定就可以了。
  • 对不起卢锡安,我不小心不接受你的回复作为答案,然后重新接受了。如果您收到任何关于此的通知,请忽略。感谢您的帮助!
  • 我认为这是一种解决方法,而不是答案。 AutoMapper 应该完全能够自己进行展平。但是我们没有看到足够的代码来说明为什么它没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 2017-07-22
相关资源
最近更新 更多