#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