Reputation: 8177
My model object has some properties for lazy loaded collections and AutoMapper is for these collections to be loaded even when I don't need them (this is causing thousands of query executions in my DB). Is it possible to make AutoMapper ignore some properties when I call Mapper.Map
?
public TTarget Adapt<TSource, TTarget>(TSource source)
{
return Mapper.Map<TTarget>(source);
}
Upvotes: 2
Views: 5411
Reputation: 4197
With AutoMapper 8.0 the previous answer no longer works.
8.0 Upgrade Guide - ForSourceMember Ignore
So the adjusted answer would be:
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());
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;}
}
Here is how I ignore a property with Automapper (I've included how to ignore both in the source and destination object):
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());
Upvotes: 5
Reputation: 4969
With AutoMapper 8.0 @Prabu's answer no longer works.
8.0 Upgrade Guide - ForSourceMember Ignore
So the adjusted answer would be:
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());
Upvotes: 2
Reputation: 849
Mapper.CreateMap<SourceClass, DestinationClass>()
.ForMember(b=>b.SomeMember, c=>c.Ignore());
Upvotes: 2