Я следовал официальной документации, утверждая переход от stati c API в отношении Automapper 9.0, но все еще не могу заставить его работать в моем c# do tnet основном приложении. Я получаю следующее исключение:
"AutoMapperMappingException: отсутствует конфигурация карты типов или неподдерживаемое отображение" в классе моего контроллера. "
Можете ли вы показать мне шаги конфигурации как С уважением, Automapper 9.0?
Вот шаги, которые я выполнил:
Startup.cs
var mappingConfig = new MapperConfiguration(mc =>
{
mc.AddProfile(new MyMapperProfile());
});
IMapper mapper = mappingConfig.CreateMapper();
services.AddSingleton(mapper);
MyMapperProfile class
CreateMap<MasterData.Models.SupplierMaterial, SupplierMaterial>().
ForMember(dto => dto.TechnicalDrawings, conf => conf.MapFrom(ol =>
ol.TechnicalDrawings.Select(v => v.Id)));
CreateMap<MasterData.Models.WarehouseUbication, WarehouseUbication>().
ForMember(dto => dto.MaterialCode, conf => conf.MapFrom(ol => ol.Material.Code));
CreateMap<MasterData.Models.TechnicalDrawing, TechnicalDrawing>().
ForMember(dto => dto.MaterialCode, conf => conf.MapFrom(ol => ol.Materials.Select(v => v.Code)))
.ForMember(dto => dto.SupplierMaterialCode, conf => conf.MapFrom(ol => ol.SupplierMaterials.Select(v => v.Code)));
CreateMap<MasterData.Models.MaterialDocument, MaterialDocument>().
ForMember(dto => dto.Materials, conf => conf.MapFrom(ol => ol.Materials.Select(v => v.Code)));
CreateMap<MasterData.Models.Material, Material>().
ForMember(dto => dto.WarehouseUbications, conf => conf.MapFrom(ol => ol.WarehouseUbications.Select(v => v.Code)))
.ForMember(dto => dto.SupplierMaterials, conf => conf.MapFrom(ol => ol.SupplierMaterials.Select(v => v.Code)))
.ForMember(dto => dto.TechnicalDrawingID, conf => conf.MapFrom(ol => ol.TechnicalDrawing.Id))
.ForMember(dto => dto.MaterialDocuments, conf => conf.MapFrom(ol => ol.MaterialDocuments.Select(v => v.Materials)));
//var mapper = config.CreateMapper();
}
}
}
Класс контроллера
public MaterialController(IMasterDataService masterService, IMapper mapper)
{
this.masterDataService = masterService;
_mapper = mapper;
}
//[route]
public List<Material> getAllMaterials()
{
List<Material> materialsList = new List<Material>();
foreach (MasterData.Models.Material m in masterDataService.GetMaterials())
{
_mapper.Map<IEnumerable<Contracts.Material>>(m);
}
return materialsList;
}