让 AutoMapper 的地图忽略一些属性?
Make AutoMapper's Map ignore some properties?
我的模型对象有一些延迟加载集合的属性,AutoMapper 用于加载这些集合,即使我不需要它们(这导致我的数据库中执行了数千次查询)。调用 Mapper.Map
时是否可以让 AutoMapper 忽略某些属性?
public TTarget Adapt<TSource, TTarget>(TSource source)
{
return Mapper.Map<TTarget>(source);
}
Mapper.CreateMap<SourceClass, DestinationClass>()
.ForMember(b=>b.SomeMember, c=>c.Ignore());
使用 AutoMapper 8.0 之前的答案不再有效。
8.0 Upgrade Guide - ForSourceMember Ignore
所以调整后的答案是:
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;}
}
以下是我如何使用 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());
使用 AutoMapper 8.0 @Prabu 的答案不再有效。
8.0 Upgrade Guide - ForSourceMember Ignore
所以调整后的答案是:
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());
我的模型对象有一些延迟加载集合的属性,AutoMapper 用于加载这些集合,即使我不需要它们(这导致我的数据库中执行了数千次查询)。调用 Mapper.Map
时是否可以让 AutoMapper 忽略某些属性?
public TTarget Adapt<TSource, TTarget>(TSource source)
{
return Mapper.Map<TTarget>(source);
}
Mapper.CreateMap<SourceClass, DestinationClass>()
.ForMember(b=>b.SomeMember, c=>c.Ignore());
使用 AutoMapper 8.0 之前的答案不再有效。
8.0 Upgrade Guide - ForSourceMember Ignore
所以调整后的答案是:
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;}
}
以下是我如何使用 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());
使用 AutoMapper 8.0 @Prabu 的答案不再有效。
8.0 Upgrade Guide - ForSourceMember Ignore
所以调整后的答案是:
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());