Я использую Automapper (automapper.extensions.microsoft.dependencyinjection) в .Net Core для сопоставления списка моделей с моделями 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 , IEnumerable
1, IEnumerable`1, ResolutionContext)}