【问题标题】:Can't return a List using automapper无法使用自动映射器返回列表
【发布时间】:2019-11-19 04:06:00
【问题描述】:

我有一个结合名字和姓氏的视图模型

public class EmployeeDTO
{
    public string emp_id { get; set; }
    public string fullname{ get; set; }

    public List<EmployeeDTO> EmployeeDTOMap(List<employeeinfo> entities)
    {
        var config = new MapperConfiguration(cfg =>
        {
            cfg.ValidateInlineMaps = false;
            cfg.CreateMap<employeeinfo, EmployeeDTO>()
                .ForMember(d => d.emp_id, o => o.MapFrom(src => src.emp_id))
                .ForMember(d => d.fullname,
                    o => o.MapFrom(src => string.Format("{0} {1}", src.firstname, src.lastname)))
                .ForAllOtherMembers(o => o.MapAtRuntime());
        });

        var mapper = config.CreateMapper();
        var dest = mapper.Map(mapper.Map(entities, typeof(List<employeeinfo>)), new List<EmployeeDTO>());
        return dest;
    }

}

但唯一的问题是返回值为 null,尽管我传递了 2 个实体 EmployeeDTOMap()。

【问题讨论】:

  • 有什么原因,你映射了两次?您可以将代码更改为mapper.Map&lt;List&lt;EmployeeDTO&gt;&gt;(entities),它将实体List&lt;employeeinfo&gt; 映射到List&lt;EmployeeDTO&gt;
  • 外层mapper.map

标签: c# automapper


【解决方案1】:

为什么需要自动映射器?

public class EmployeeDTO
{
    public string emp_id { get; set; }
    public string fullname { get; set; }

    public List<EmployeeDTO> EmployeeDTOMap(List<employeeinfo> entities)
    {
        return entities.Select(o => new EmployeeDTO
        {
            emp_id = o.emp_id,
            fullname = string.Format("{0} {1}", o.firstname, o.lastname)
        }).ToList();
    }

}

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    相关资源
    最近更新 更多