让 AutoMapper 的 Map 忽略某些属性?

Jul*_*ira 2 c# automapper

我的模型对象具有一些用于延迟加载集合的属性,而 AutoMapper 则可以在我不需要它们时加载这些集合(这导致我的数据库中执行数千次查询)。当我调用时,是否可以使 AutoMapper 忽略某些属性Mapper.Map

public TTarget Adapt<TSource, TTarget>(TSource source)
{
    return Mapper.Map<TTarget>(source);
}
Run Code Online (Sandbox Code Playgroud)

Pra*_*abu 5

对于 AutoMapper 8.0,之前的答案不再有效。

8.0升级指南-ForSourceMember忽略

所以调整后的答案是:

Mapper.CreateMap<Person, Doctor>()
      .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.LastName))
      .ForMember(dest => dest.Id, opt => opt.Ignore())
      .ForSourceMember(src=> src.FirstName, opt => opt.DoNotValidate());
Run Code Online (Sandbox Code Playgroud)
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }    
}

public class Doctor
{
    public int Id { get; set; }
    public string Name { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

以下是我如何使用 Automapper 忽略属性(我已经包含了如何在源对象和目标对象中忽略属性):

Mapper.CreateMap<Person, Doctor>()
      .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.LastName))
      .ForMember(dest => dest.Id, opt => opt.Ignore())
      .ForSourceMember(src=> src.FirstName, opt => opt.Ignore());
Run Code Online (Sandbox Code Playgroud)