如何解决使用投影的 Automapper 自定义解析逻辑
我有一个 EF 对象帐户,它为不同的投资组合类型关闭了 4 个外部参照。为简单起见,我将这些类型称为 A、B、C 和 D。
public class Account
{
public long AccountId { get; set; }
public PortfolioTypeAXref { get; set; }
public PortfolioTypeBXref { get; set; }
public PortfolioTypeCXref { get; set; }
public PortfolioTypeDXref { get; set; }
}
我的目标对象是一个扁平化的对象。
public class AccountDto
{
public long AccountId { get; set; }
public PortfolioType PortfolioType { get; set; } //this is an enum with values A,B,C,D,UnkNown
public long? PortfolioId { get; set; }
}
每个外部参照对象看起来像这样
public class PortfolioTypeAXref
{
public long XrefId { get; set; }
public long AccountId { get; set; }
public long? PortfolioTypeAId { get; set; }
public long? HypotheticalPortfolioTypeAId { get; set; }
}
我正在使用 linq to Ef 投影来翻译我的对象。我还编写了一个自定义值解析器,但是在使用 MapFrom
时,我注意到它说它不适用于投影。
解析器的逻辑本质上会检查哪些(如果有)外部参照分配了投资组合 ID,如果有,则返回一个具有适当值的枚举。
profile.CreateMap<Account,AccountDto>()
.ForMember(dest => dest.PortfolioType,opt => opt.MapFrom<PortfolioTypeResolver>())
.ForAllOtherMembers(opt => opt.Ignore());
但是,这会导致错误,可能是因为将 MapFrom
与自定义解析器一起使用并不意味着与投影一起使用。我不喜欢使用自定义解析器的想法 - 它可能只是一个函数调用,但如何根据使用源对象值的自定义逻辑设置目标属性?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。