我的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;
});
我应该怎么做?
答案 0 :(得分:5)
关于如何修复AutoMapper配置,我没有任何答案。但是,您的问题是如何避免这种情况?和我应该怎么做,因此我想提出一些建议:不要在映射器中放入业务逻辑组态。
不这样做的原因是: