我在我的LoanProfile
中有这个:
CreateMap<Loan, LoanDto>()
.ForMember(
dto => dto.TotalLoanAdvanced,
loan => loan.MapFrom(l => l.TotalLoanAdvanced()))
.ForMember(
dto => dto.TotalInterestToLoanEndDate,
loan => loan.MapFrom(l => l.InterestRepaymentAtLoanEndDate()))
.ReverseMap()
.AfterMap((dto, loan) =>
{
});
TotalLoanAdvanced()
和TotalinterestRepaymentToLoanEndDate()
是Loan
的扩展方法。
然而,为了计算总利息,我的扩展方法当然是要求TotalLoanAdvanced()
乘以利率,这意味着我为每个被映射的贷款计算TotalLoanAdvanced
两次。
我怎么能避免这个?
我认为它可能是像BeforeMap
或AfterMap
这样的东西,但当我尝试
.AfterMap((dto, loan) =>
{
dto.TotalLoanAdvanced = 5000000;
});
我可以看到dto
映射为TotalLoanAdvanced
为0.使用BeforeMap
执行此操作时会发生同样的事情:
.BeforeMap((loan, dto) =>
{
dto.TotalLoanAdvanced = 5000000;
});
我该怎么做?
我对如何修复AutoMapper配置没有答案。但是,您的问题是如何避免这种情况?我应该如何做到这一点,所以我想回答一些建议:不要在映射器配置中放置业务逻辑。
不这样做的原因是: