2015-08-04 3 views
1

У моего объекта модели есть некоторые свойства для ленивых загружаемых коллекций, и AutoMapper предназначен для загрузки этих коллекций, даже если они мне не нужны (это вызывает тысячи запросов в моей базе данных). Можно ли заставить AutoMapper игнорировать некоторые свойства, когда я вызываю Mapper.Map?Как сделать карту AutoMapper игнорировать некоторые свойства?

public TTarget Adapt<TSource, TTarget>(TSource source) 
{ 
    return Mapper.Map<TTarget>(source); 
} 

ответ

4
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;} 
} 

Вот как я игнорировать свойство с 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()); 
2
Mapper.CreateMap<SourceClass, DestinationClass>() 
       .ForMember(b=>b.SomeMember, c=>c.Ignore()); 
+0

Не могли бы вы, возможно, дать более «реальный мир»? Трудно понять, какими должны быть эти два аргумента в ForMember(), то есть c => c.Ignore флаг или свойство, которое нужно игнорировать? –

+0

Это выражение MemberConfigurationExpression для TSource. Вы должны использовать фактические типы отображаемых объектов, на которые вы не приводили примеры. SomeMember будет именем свойства на TTarget, которое вы хотите игнорировать. –

Смежные вопросы