AutoMapper IgnoreAllTheRest功能

时间:2015-03-25 21:32:52

标签: c# automapper

我是AutoMapper的新手,想要设置两个要映射的属性,但其他15个要忽略。

我的研究和阅读如here表示有3种选择。

  1. 使用Ignore(),例如:(当前可以,但它可以工作但是很臃肿)

    d => d.IgnoreMe, opt => opt.Ignore()
    
  2. 使用[IgnoreMapAttribute]进行批注。希望我能,但是我不想调整对象。

  3. here发布的Rami A答案等扩展方法(我必须对其进行调整)

  4. 然而,在我看来,这些选项是解决方法,我只是没有正确使用AutoMapper?

    我正在寻找的是:

    Mapper.CreateMap<Customer, DropPointModel>()
          .ForMember(dest => dest.CustomerId,
                     opts => opts.MapFrom(src => src.Id))
          .ForMember(dest => dest.VendorId,
                     opts => opts.MapFrom(src => src.VendorId))
          .IgnoreAllOtherMappings();
    

    在AutoMapper中是否存在这些行中的某些内容并且我没有正确实现,或者我是否正确并且只需要编写扩展方法。如果是后者,我会在这里回复其他人。

2 个答案:

答案 0 :(得分:0)

您是否尝试使用以下

之类的东西
public static class MappingExpressionExtensions
{
    public static IMappingExpression<TSource, TDest> IgnoreAllUnmapped<TSource, TDest>(this IMappingExpression<TSource, TDest> expression)
    {
        expression.ForAllMembers(opt => opt.Ignore());
        return expression;
    }
}

      .ForMember(dest => dest.CustomerId,
                       opts => opts.MapFrom(src => src.Id))
      .ForMember(dest => dest.VendorId,
                      opts => opts.MapFrom(src => src.VendorId))
        .IgnoreAllUnmapped();

或者

.ForMember(dest => dest.CustomerId,
                       opts => opts.MapFrom(src => src.Id))
      .ForMember(dest => dest.VendorId,
                      opts => opts.MapFrom(src => src.VendorId))
      .ForAllMembers(opt => opt.Ignore());

答案 1 :(得分:0)

这是另一个重复的问题,我不打算在这里提供答案,因为原作者需要对他们的工作表示赞赏。

请在此处查看,如果有帮助,请务必提醒。

AutoMapper: "Ignore the rest"?