我定义了如下Map。在将DB实体复制到Map中使用MemberList.None的DTO时,Automapper仍然尝试Map名为StaffProperties的目标属性。它不应该使用显式Map并忽略目标对象中的其他属性吗?
自动Map器版本:12.0.1
标测
CreateMap<Staff, StaffDetailDto>()
.ForMember(dest => dest.StaffProperties, opt => opt.MapFrom(src => JsonConvert.DeserializeObject<StaffProperties>(src.Properties)));
CreateMap<StaffRole, StaffDetailDto>(MemberList.None)
.ForMember(dest => dest.OrganizationRole, opt => opt.MapFrom((src, dest) =>
{
return (src != null) ? src.OrganizationRole : (OrganizationRole?)null;
}));
服务层
var staffDetailDto = _mapper.Map<StaffDetailDto>(stf);
// fetch staffRole from db
staffDetailDto = _mapper.Map(staffRole, staffDetailDto);
在_mapper.Map(人员角色,人员详细信息Dto)上引发异常
Error mapping types.
Mapping types:
StaffRole -> StaffDetailDto
Baseline.Models.StaffRole -> Baseline.Services.Models.Staff.StaffDetailDto
Type Map configuration:
StaffRole -> StaffDetailDto
Baseline.Models.StaffRole -> Baseline.Services.Models.Staff.StaffDetailDto
Destination Member:
StaffProperties
1条答案
按热度按时间j0pj023g1#
我最终避免了MemberList.None,并创建了一个扩展方法IgnoreAllNonExisting()作为ForAllOtherMembers()的替代方法。注意,这并不理想,因为它依赖于AutoMapper内部,但满足了我的需要。