我正在使用Automapper,我有以下场景:
类OrderModel有一个名为“ProductName”的属性,该属性不在数据库中。
所以当我尝试用:
Mapper.CreateMap<OrderModel, Orders>();
它会生成一个异常:
" Project.ViewModels.OrderModel上的以下1个属性没有被映射:
我已经在AutoMapper的Wiki上阅读了相反的情况(额外的属性是在目的地,而不是在实际上是我的情况下的源)
我如何避免自动程序使这个属性的映射?
也可以忽略像这样的全局属性:
在映射器配置中使用AddGlobalIgnore(string propertyNameStartingWith)方法来忽略以指定字符串开头的属性。
使用shouldmproperty提供一个谓词,并有条件地选择要映射的属性。ShouldMapField和ShouldMapMethod属性也可用。
用法:
public class MappingProfile : Profile
{
public MappingProfile()
{
// other configs...
AddGlobalIgnore("foo")); // this will ignore properties with name starting with "foo"
ShouldMapProperty = p => p.Name != "bar"; // this will ignore properties with name "bar"
}
}
Or :
var config = new MapperConfiguration(cfg => {
// other configs...
cfg.AddGlobalIgnore("foo"); // way 1
cfg.ShouldMapProperty = p => p.Name != "bar"; // way 2
});
也可以忽略像这样的全局属性:
在映射器配置中使用AddGlobalIgnore(string propertyNameStartingWith)方法来忽略以指定字符串开头的属性。
使用shouldmproperty提供一个谓词,并有条件地选择要映射的属性。ShouldMapField和ShouldMapMethod属性也可用。
用法:
public class MappingProfile : Profile
{
public MappingProfile()
{
// other configs...
AddGlobalIgnore("foo")); // this will ignore properties with name starting with "foo"
ShouldMapProperty = p => p.Name != "bar"; // this will ignore properties with name "bar"
}
}
Or :
var config = new MapperConfiguration(cfg => {
// other configs...
cfg.AddGlobalIgnore("foo"); // way 1
cfg.ShouldMapProperty = p => p.Name != "bar"; // way 2
});
你可以这样做:
conf.CreateMap<SourceType, DestinationType>()
.ForSourceMember(x => x.SourceProperty, y => y.Ignore());
或者,在最新版本的Automapper中,您只需告诉Automapper不验证该字段
conf.CreateMap<SourceType, DestinationType>()
.ForSourceMember(x => x.SourceProperty, y => y.DoNotValidate());