public AutoMapperProfile() { CreateMap <ApplicationUser, UserViewModel>() .ForMember(d => d.Roles, map => map.Ignore()); CreateMap <UserViewModel, ApplicationUser>() .ForMember(d => d.Roles, map => map.Ignore()); CreateMap <ApplicationUser, UserEditViewModel>() .ForMember(d => d.Roles, map => map.Ignore()); CreateMap <UserEditViewModel, ApplicationUser>() .ForMember(d => d.Roles, map => map.Ignore()); CreateMap <ApplicationUser, UserPatchViewModel>() .ReverseMap(); CreateMap <ApplicationRole, RoleViewModel>() .ForMember(d => d.Permissions, map => map.MapFrom(s => s.Claims)) .ForMember(d => d.UsersCount, map => map.ResolveUsing(s => s.Users?.Count ?? 0)) .ReverseMap(); CreateMap <RoleViewModel, ApplicationRole>(); CreateMap <IdentityRoleClaim <string>, ClaimViewModel>() .ForMember(d => d.Type, map => map.MapFrom(s => s.ClaimType)) .ForMember(d => d.Value, map => map.MapFrom(s => s.ClaimValue)) .ReverseMap(); CreateMap <ApplicationPermission, PermissionViewModel>() .ReverseMap(); CreateMap <IdentityRoleClaim <string>, PermissionViewModel>() .ConvertUsing(s => Mapper.Map <PermissionViewModel>(GlobalConstants.GetPermissionByValue(s.ClaimValue))); }