我在EF和Web API 2中使用了AutoMapper。命令
tempValue = Mapper.Map<MwbePaymentMethodDtoInOut>(res);
似乎不起作用。结果对象应该是没有Payments元素的对象,因为AutoMapper定义会忽略它(行:.ForSourceMember(src => src.Payments,opt => opt.Ignore()))。
Global.asax
Namespace MobileWallet.Api
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
StartAutomapper();
}
private void StartAutomapper(){
Mapper.Initialize(cfg =>
{
AutoMapperConfiguration.Configure();
});
}
}
}
AutoMapper定义
public class MwbeToDomain : Profile
{
public override string ProfileName
{
get
{
return "MwbeToDomainMapping";
}
}
protected override void Configure()
{
CreateMap<MwbePaymentMethod, MwbePaymentMethodDtoInOut>()
.ForMember(dest => dest.methodType, opt => opt.ResolveUsing<EnumToStringResolver<MwbePaymentMethod.MethodTypeEnum>>().FromMember(source => source.MethodType))
.ForMember(dest => dest.BillingAddress, opt => opt.MapFrom(source => source.BillingAddress))
.ForSourceMember(source => source.UserData, opt => opt.Ignore())
.ForMember(dest => dest.expirationdate, opt => opt.ResolveUsing<DateTimeToString>().FromMember(source => source.ExpirationDate))
.ForSourceMember(src => src.Payments, opt => opt.Ignore())
.ForSourceMember(src => src.Number, opt => opt.Ignore());
}
}
我的代码有什么问题?
添加:
我在设置配置后立即添加了AutoMapper验证:
private void StartAutomapper(){
//Mapper.AssertConfigurationIsValid();
Mapper.Initialize(cfg =>
{
AutoMapperConfiguration.Configure();
});
Mapper.AssertConfigurationIsValid();
}
验证码由应用程序启动,但未显示任何错误。
我找到了解决方案,这是我的“愚蠢”错误:)。
我必须从目标类中删除忽略的属性。当属性在那里时,AutoMapper不会忽略它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句