【问题标题】:AutoMapper .AfterMap() vs .ForMember()AutoMapper .AfterMap() 与 .ForMember()
【发布时间】:2020-03-21 16:22:44
【问题描述】:

我遇到了一个问题,我可以使用 AutoMapper 中的 .AfterMap() 方法或 .ForMember() 方法。我正在研究一点,但没有找到任何有关它的信息。它们之间有什么区别,或者您什么时候会使用其中一种?

AfterMap

.AfterMap((src, dest) => dest.SomeDestinationProperty = src.SomeSourceProperty);

会员

.ForMember(
    dest => dest.SomeDestinationProperty,
    opt => opt.MapFrom(src => src.SomeSourceProperty)
);

【问题讨论】:

  • AfterMap 只是一个逃生口。

标签: c# automapper


【解决方案1】:

AfterMap 是在 AutoMaper 完成工作后执行的代码。 AutoMapper 对此一无所知(它是一个黑匣子),不能在其中使用任何逻辑。

ForMember 指定单个成员的映射,但真正的魔法发生在与MapFrom 一起使用时。在这种组合中,AutoMapper 确切地知道如何将一个成员映射到另一个成员,并且它可以自动创建反向映射。它还允许您在 LINQ 中使用 ProjectTo,这将产生更优化的查询(尤其是当您的 DTO 仅包含实体中的少数字段时)。

【讨论】:

  • 另外,验证。因为AfterMap 是一个黑盒子,AM 不知道哪些成员是这样映射的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多