我们的实体有一个名为“DateDeleted”的字段。有时我们可能会将这些加载到实体中,我们希望在将它们发送到客户端之前将其过滤掉。
我们的实体还有子实体,它们都有子实体,所有子实体都有DateDeleted。
使用Automapper实现此功能的最佳做法是什么 - 具体来说 - 当源具有带有值的Date Deleted属性时,如何将Null值映射到目标(对于整个对象)?
答案 0 :(得分:3)
配置映射时可以忽略特定属性
CreateMap<srcType, destType>.ForMember(x => x.DateDeleted, opt => opt.Ignore());
编辑: 要在映射期间执行自定义条件逻辑,您需要实现自定义解析器:
public class NullCheckResolver : IValueResolver<TSrc, TDest, TProp>
{
public TProp Resolve(TSrc source, TDest destination, TProp member, ResolutionContext context)
{
if (member.DateDeleted == null)
return member;
return null;
}
}
CreateMap<TSrc, TDest>().ForMember(dest => dest.MyOptionalProperty, opt => opt.ResolveUsing<NullCheckResolver>());
有关自定义解析程序的详细信息,请参阅AutoMapper documentation