如何在AutoMapper中反转映射复杂对象

时间:2014-12-30 16:59:52

标签: c# automapper

以下是CreateMap方法:

        Mapper.CreateMap<Domain.Models.Organization, OrganizationInputModel>()
            .ForMember(dest => dest.Address1, opts => opts.MapFrom(src => src.Address.Address1))
            .ForMember(dest => dest.Address2, opts => opts.MapFrom(src => src.Address.Address2))
            .ForMember(dest => dest.City, opts => opts.MapFrom(src => src.Address.City))
            .ForMember(dest => dest.State, opts => opts.MapFrom(src => src.Address.State))
            .ForMember(dest => dest.Zip, opts => opts.MapFrom(src => src.Address.Zip))
            .ReverseMap();

此处Address是一个复杂的对象。

我期待看到双向模型映射。但事实证明复杂的对象映射已被破坏:

var entity = AutoMapper.Mapper.Map<Domain.Models.Organization>(model);

我收到了一个错误:

  

{&#34; message&#34;:&#34;非可空成员的空值。会员:&#39;地址&#39;。&#34;}


有些SO帖子说反向映射仅适用于简单对象,在这种情况下我们必须创建两个Mapper.CreateMap。是真的吗?

1 个答案:

答案 0 :(得分:0)

是的,在这种情况下,您需要创建反向映射。原因是因为AutoMapper不知道如何实例化目标Address属性。