当我使用AutoMapper时发生以下错误

时间:2018-08-29 08:34:13

标签: automapper

开发环境:

AutoMapper:7.0.1 NetCore:2.1

错误内容: 找到未映射的成员。在下面查看类型和成员。 添加自定义映射表达式,忽略,添加自定义解析器或修改源/目标类型 对于没有匹配的构造函数,请添加一个无参数ctor,添加可选参数,或映射所有构造函数参数

我的模特:

public partial class XsOrdersitems
    {
        public int Id { get; set; }
        public string ParentNo { get; set; }
        public string GoodsSn { get; set; }
        public string Name { get; set; }
        public string Barcode { get; set; }
    }

我的DTO类型:

public class DTOOrderItem
    {
        public string OrderPaNo { get; set; }
        public string OrderNo { get; set; }
        public string OrderNe { get; set; }
        public string OrderComm { get; set; }
    }

我的映射配置:

reateMap<DTOOrderItem, XsSalesitems>()
     .ForMember(d => d.Id, opt =>opt.Ignore())
     .ForMember(d => d.Name, opt => { opt.MapFrom(s => s.OrderNe); })
     .ForMember(d => d.GoodsSn, opt => { opt.MapFrom(s => s.OrderNo);})          
     .ForMember(d => d.ParentNo, opt => { opt.MapFrom(s =>s.OrderPaNo);})
     .ForMember(d => d.Comment, opt => { opt.MapFrom(s => s.OrderComm); });

我尝试使用opt。 Ignore()会忽略未配置的映射属性,但仍报告上述错误,请帮助我,谢谢您抽出宝贵时间回答我的问题。

1 个答案:

答案 0 :(得分:0)

根据您的示例,您正在映射到错误的模型。您的CreateMap定义是将DTOOrderItem映射到XsSalesitems,但是您的注释表明您想映射到XsOrderitems。可以尝试添加具有必要的CreateMap<DTOOrderItem, XsOrderitems>()...引用的附加.Ignore(),您应该会很高兴。

完整的映射定义:

CreateMap<DTOOrderItem, XsOrderitems>()
    .ForMember(d => d.Id, opt => opt.Ignore())
    .ForMember(d => d.Name, opt => opt.MapFrom(s => s.OrderNe))
    .ForMember(d => d.GoodsSn, opt => opt.MapFrom(s => s.OrderNo))          
    .ForMember(d => d.ParentNo, opt => opt.MapFrom(s =>s.OrderPaNo))
    .ForMember(d => d.Comment, opt => opt.MapFrom(s => s.OrderComm));