Настройте и используйте Automapper 8.1, AutoMapper DI и ASP.NET Core 2.2

120
9

Мне трудно работать с последней версией AutoMapper. У меня есть ASP.NET Core Application, и я не совсем понимаю, как правильно настроить AutoMapper.

Насколько я понял, нужно сделать три основных шага. Добавить профиль сопоставления:

public class MyProfile : Profile
{
public MyProfile()
{
CreateMap<IFormFile, MyFile>()
.ReverseMap();
}
}

AddAutoMapper к ServiceCollection... Это одна из проблем - документы говорят мне что-то о добавлении AddAutoMapper(assembly1, assembly2/*.. */) или AddAutoMapper(type1, type2/*..*/). добавив два типа, которые я хочу отобразить, но я не знаю, правильно ли это.

Mapper.Initialize(x => x.AddProfile<MyProfile>());
services.AddAutoMapper(typeof(IFormFile), typeof(MyFile));

Последний шаг - фактическое отображение:

public class FileController : ApiControllerBase
{
private readonly IMapper _mapper;

public FileController(IMapper mapper)
=> _mapper = mapper;

[HttpPost]
public async Task<IActionResult> Upload(IFormFile formFile)
{
// do some stuff here
MyFile file = context.Files.Where(e => e.SomeProperty == SomeCondition)
.FirstOrDefault();
if (file == null)
{
file = _mapper.Map<IFormFile, MyFile>(formFile);
}
// do some stuff here
return Ok();
}
}

Это сообщение об исключении:

Не нанесенные на карту участники были найдены. Просмотрите типы и членов ниже.

Добавить пользовательское выражение сопоставления, игнорировать, добавить пользовательский преобразователь или изменить тип источника/назначения

Если нет подходящего конструктора, добавьте ctor без аргументов, добавьте необязательные аргументы или отобразите все параметры конструктора.

================================================== ========================

AutoMapper создал эту карту типов для вас, но ваши типы не могут быть сопоставлены с использованием текущей конфигурации.

FormFile → MyFile (Список получателей)

Microsoft.AspNetCore.Http.Internal.FormFile → MyApp.Domain.Entities.MyFile (Список получателей)

Несопоставленные свойства:

Я бы

CreateDate

Создать пользователя

удаленный

ModfiedDate

ModifyUser

Версия

Исключение остается тем же, если я "игнорирую" каждое свойство, упомянутое в исключении, например: .ForMember(m => m.CreateDate, opt => opt.Ignore())

Что я здесь не так делаю?

спросил(а) 2019-05-06T21:34:00+03:00 1 год, 2 месяца назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема