jav*_*nof 13 .net c# asp.net-mvc automapper
我正在使用autommaper将域类映射到模型类,反之亦然.我需要加密/解密一个属性.当我将Model映射到Domain时没有问题,完美地工作:
Mapper.CreateMap<EntityModel, Entity>().ForMember(dest => dest.Password, opt => opt.ResolveUsing(src => this.EncryptString(src.Password)))
Run Code Online (Sandbox Code Playgroud)
但是当将实体映射到模型的自动化程序崩溃并抛出"无法将其解析为可查询表达式"时:
Mapper.CreateMap<Entity, EntityModel>().ForMember(dest => dest.Password, opt => opt.ResolveUsing(src => this.DecryptString(src.Password)))
Run Code Online (Sandbox Code Playgroud)
我也尝试过自定义值解析器,结果相同:
Mapper.CreateMap<Entity, EntityModel>().ForMember(dest => dest.Password, op => op.ResolveUsing<PasswordResolver>().FromMember(x => x.Password));
public class PasswordResolver : ValueResolver<object, string>
{
protected override string ResolveCore(object source)
{
return "TEST";
}
}
Run Code Online (Sandbox Code Playgroud)
Jim*_*ard 17
如文档所述,您不能在可查询表达式中使用自定义解析器:
https://github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensions#supported-mapping-options
但是,您可以使用MapFrom:
Mapper.CreateMap<Entity, EntityModel>()
.ForMember(dest => dest.Password, op => op.MapFrom(src => "TEST"));
Run Code Online (Sandbox Code Playgroud)
我猜这不是你想要为密码属性做什么,但这就是你可以修复这个例子的方法.