首页 > 解决方案 > Automapper 不工作 - 一直说已映射的属性的未映射属性

问题描述

我在 .Net Core 中使用 Automapper (automapper.extensions.microsoft.dependencyinjection) 从模型列表映射到 dto。我已经使用 ForMember 为属性创建了一个映射,但我不断收到一个错误,即该属性未映射。

services.AddAutoMapper(typeof(Startup).Assembly);
var userRolesDtos = 
                _mapper.Map<IEnumerable<UserRole>, IEnumerable<UserRoleDto>>(await _userRoleService.GetUserRolesAsync(urrp)); // method return <IEnumerable<UserRole>
public class UserRole 
    {
        [Key]
        [Required]
        public Guid Id { get; set; }
        [Required]
        public string Name { get; set; }
        public ICollection<UserRolePermission> UserRolePermissions { get; set; } = new List<UserRolePermission>();
        public DateTime? DateCreated { get; set; }
        public DateTime? DateModified { get; set; }
        public DateTime? DateDeleted { get; set; }
    }
public class UserRoleDto
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public DateTime? DateCreated { get; set; }
        public DateTime? DateModified { get; set; }
        public DateTime? DateDeleted { get; set; }
        public ICollection<UserPermissionDto> UserPermissions { get; set; } = new List<UserPermissionDto>();
    }
public class UserRoleProfile : Profile
    {
        public UserRoleProfile()
        {
            CreateMap<UserRole, UserRoleForCreation>().ReverseMap();
            CreateMap<UserRole, UserRoleForPartialUpdate>().ReverseMap();
            CreateMap<UserRole, UserRoleDto>(MemberList.None)
                .ForMember(
                    dest => dest.UserPermissions,
                    src => src.Ignore()
                );
        }
    }

我希望该对象映射并忽略 UserPermissions 属性,但我收到此错误:

{AutoMapper.AutoMapperConfigurationException:找到未映射的成员。查看下面的类型和成员。添加自定义映射表达式、忽略、添加自定义解析器或修改源/目标类型

对于没有匹配的构造函数,添加一个无参数 ctor、添加可选参数或映射所有构造函数参数

AutoMapper 为您创建了此类型映射,但您的类型无法使用当前配置进行映射。UserRole -> UserRoleDto(目标成员列表) BIN.Core.Models.UserRoles.UserRole -> BIN.Core.Dtos.UserRoleDto(目标成员列表)

未映射的属性:UserPermissions

在 AutoMapper.ConfigurationValidator.AssertConfigurationIsValid(IEnumerable 1 typeMaps) in C:\projects\automapper\src\AutoMapper\ConfigurationValidator.cs:line 48 at lambda_method(Closure , IEnumerable1,IEnumerable`1,ResolutionContext)}

标签: asp.net-core.net-coreautomapper

解决方案


推荐阅读