微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用投影的 Automapper 自定义解析逻辑

如何解决使用投影的 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 举报,一经查实,本站将立刻删除。