gpt4 book ai didi

c# - Automapper ResolveUsing 原因 "Can' t 将此解析为可查询表达式”

转载 作者:可可西里 更新时间:2023-11-01 08:07:25 26 4
gpt4 key购买 nike

我正在使用 autommaper 将域类映射到模型类,反之亦然。我需要加密/解密一个属性。当我将模型映射到域时没有问题,完美地工作:

Mapper.CreateMap<EntityModel, Entity>().ForMember(dest => dest.Password, opt => opt.ResolveUsing(src => this.EncryptString(src.Password)))

但是当将实体映射到模型自动映射器崩溃并抛出“无法将其解析为可查询表达式”时:

Mapper.CreateMap<Entity, EntityModel>().ForMember(dest => dest.Password, opt => opt.ResolveUsing(src => this.DecryptString(src.Password)))

我也尝试过使用自定义值解析器,结果相同:

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";
}

}

最佳答案

如文档所述,您不能在可查询表达式中使用自定义解析器:

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"));

我猜这实际上不是您想为该密码属性做的,但这是您可以修复示例的方法。

关于c# - Automapper ResolveUsing 原因 "Can' t 将此解析为可查询表达式”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30184988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com