Я использую Automapper в MVC Core для сопоставления между своими сущностями и DTO и внедряю его с помощью следующего кода.
var mappingConfig = new MapperConfiguration(mc =>
{
mc.CreateMissingTypeMaps = true;
mc.AddProfile(new MappingProfile());
});
IMapper mapper = mappingConfig.CreateMapper();
services.AddSingleton(mapper);
У меня такие отношения.
public class ProgramDTO
{
public Guid Id { get; set; }
public string Name { get; set; }
public List<AnalystDTO> Analysts { get; set; }
}
public class AnalystDTO
{
public Guid ID { get; set; }
public string Email { get; set; }
}
public class ProgramEntity
{
public Guid Id { get; set; }
public string Name { get; set; }
public ICollection<AnalystEntity> AnalystEntitys { get; set; }
}
public class AnalystEntity
{
public Guid ID { get; set; }
public string Email { get; set; }
public int ProgramEntityId { get; set; }
public ProgramEntity ProgramEntity { get; set; }
}
Я пытаюсь сопоставить ProgramDTO и ProgramEntity, чтобы заполнить список аналитиков, но не могу найти конкретный пример.Мой профиль сопоставления в настоящее время выглядит следующим образом.
// Program Analyst
CreateMap<AnalystDTO, AnalystEntity>();
CreateMap<AnalystEntity, AnalystDTO>();
// Program
CreateMap<ProgramDTO, ProgramEntity>();
CreateMap<ProgramEntity, ProgramDTO>()
.ForMember(dest => dest.Analysts, opt => opt.MapFrom(s => Mapper.Map<IEnumerable<AnalystEntity>, IEnumerable<AnalystDTO>>(s.AnalystEntitys)));
Это сопоставление представляется логически правильным, однако после запуска кода я получаю сообщение об ошибке «Mapper not initialized», которое, как я полагаю, связано с тем, что я использую DI,
Является ли это правильным подходом для сопоставления свойств навигации с их собственными DTO и, если да, как мне получить ссылку на Mapper в профиле сопоставления?Если нет, может кто-нибудь указать мне правильное направление?Заранее спасибо!