Отсутствует конфигурация карты типов или неподдерживаемое отображение. Automapper

#c# #asp.net #asp.net-web-api #mapping #automapper

#c# #asp.net #asp.net-web-api #сопоставление #automapper

Вопрос:

Я использую Automapper с NPoco в моем проекте Web Api. Вот мои Dto и модели:

 [TableName("Component")]
    public class ComponentDto
    {
        [Column("Id")]
        public int Id { get; set; }

        public string BotanicalName { get; set; }
    }

[TableName("FormulaComponent")]
    public class FormulaComponentDto
    {
        [Column("Id")]
        public int Id { get; set; }

        [Reference(ReferenceType.Foreign, ColumnName = "ComponentId", ReferenceMemberName = "Id")]
        public ComponentDto Component { get; set; }

    }

public class Component
    {
        public int Id { get; set; }
        public string BotanicalName { get; set; }
}

public class FormulaComponent
    {
        public int Id { get; set; }
        public Component Component { get; set; }
}
  

Я пытаюсь сопоставить одну модель с другой с помощью Automapper. Вот мой профиль automapper:

 public class AutoMapperProfile : Profile
    {
        protected override void Configure()
        {
            //From Model to Dto
            Mapper.CreateMap<FormulaComponent, FormulaComponentDto>().ReverseMap();
            Mapper.CreateMap<ComponentDto, Component>().ReverseMap();
        }
    }
  

Но когда я пытаюсь, у меня возникает исключение: «Отсутствует конфигурация карты типов или неподдерживаемое отображение» :

 public IEnumerable<FormulaComponent> GetAll()
        {
            var formulaComponents = _repository.Get().Include(x => x.Component).ToList();
            return _mapper.Map<IEnumerable<FormulaComponentDto>, IEnumerable<FormulaComponent>>(formulaComponents);
        }
  

UPD:
automapper инициализирован в LightInject:

 public partial class Startup
    {
        public static void InitLightInject(HttpConfiguration config)
        {
            var container = new ServiceContainer();

            Mapper.AddProfile<AutoMapperProfile>();
            container.Register<IMappingEngine>(c => Mapper.Engine);
         }
     }
  

Комментарии:

1. Помогла бы повторная версия. Сформулируйте суть , которую мы можем выполнить и увидеть сбой.

2. Пожалуйста, добавьте код, в котором регистрируется профиль (инициализация Mapper)

Ответ №1:

Я исправил эту проблему. В моем FormulaComponent классе была неправильная база имен для Component класса: System.ComponentModel вместо Domain.Components