我遇到了一个问题,我可以使用AutoMapper中的.AfterMap()方法或.ForMember()方法。我进行了一些研究,但未找到任何相关信息。它们之间有什么区别,或者您何时将其用于另一种?
AfterMap:
.AfterMap((src, dest) => dest.SomeDestinationProperty = src.SomeSourceProperty);
ForMember:
.ForMember(
dest => dest.SomeDestinationProperty,
opt => opt.MapFrom(src => src.SomeSourceProperty)
);
AfterMap
是在AutoMaper完成工作后执行的代码。 AutoMapper对它一无所知(它是一个黑匣子),并且不能在其中使用任何逻辑。
ForMember
指定单个成员的映射,但真正的魔力与MapFrom
一起使用时发生。在这种组合中,AutoMapper确切地知道如何将一个成员映射到另一个成员,并且它可以自动创建反向映射。它还允许您在Linq中使用ProjectTo
,这将导致更优化的查询(尤其是如果您的DTO仅在您的实体中仅包含少数几个字段)。