如何配置AutoMapper在映射时不检查成员列表?

时间:2019-06-03 16:30:58

标签: c# automapper

我在将成员列表选项传递给None时正在创建如下所示的地图:

CreateMap<Level, LevelVM>(MemberList.None);

但是我不想为我创建的每张地图都这样做。我希望将此设置默认应用到全局。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

默认情况下,AutoMapper尝试将源类型的所有属性映射到目标类型。如果某些属性在目标类型中不可用,则在进行映射时不会抛出异常。但是,当您使用ValidateMapperConfiguration()时,它将引发异常。

  class SourceType
    {
        public string Value1 { get; set; }
    }


class DestinationType
{    
    public string Value1{ get; set; }
    public string Value2{ get; set; }
}
  

AutoMapper.AutoMapperConfigurationException:以下1   未映射DestinationType上的属性:Value2添加自定义   映射表达式,忽略或重命名SourceType上的属性。

您可以通过进行全局设置来忽略目标类型上不存在的所有属性来覆盖此行为。 您可以像我说的那样在类级别或属性级别或全局级别上进行设置

只需在Global.asax中添加以下代码

Mapper.Initialize(cfg =>
    {
       cfg.ValidateInlineMaps = false
    }

在该属性上,级别在执行这两个对象之间的映射时会忽略Value2属性。为此,我们需要使用AutoMapper Ignore属性和

的Address属性。
config.CreateMap<SourceType,DestinationType>()
                    //Ignoring the Value2  property of the destination type
                    .ForMember(dest => dest.Value2 , act => act.Ignore());