Отсутствует карта типа или неподдерживаемое отображение - PullRequest
0 голосов
/ 05 июля 2018

Hello

В настоящее время я создаю серверную часть ASP.NET. Для отображения сущностей и объекта модели я использую AutoMapper (версия 4.2.1). Когда я отправляю почтовый запрос Почтальону для создания задачи, я всегда получаю исключение, которое говорит:

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

Типы сопоставления: NewTask -> Task TaskManager.Web.Api.Models.NewTask -> TaskManager.Data.Entities.Task

Путь назначения: задача

Исходное значение: TaskManager.Web.Api.Models.NewTask

Я попробовал несколько вещей, но так и не пришел к результату, который сработал.

Вот мой AutoMapperAdapter.cs:

Я всегда получаю сообщение об ошибке в этом файле

namespace TaskManager.Common.TypeMapping {
  public class AutoMapperAdapter : IAutoMapper {
    public T Map<T>(object objectToMap) {
      try {
        return Mapper.Map<T>(objectToMap);
      } catch (Exception ex) {
        throw ex;
      }
    }
  }
}

И процессор AddTaskMaintenance:

namespace TaskManager.Web.Api.MaintenanceProcessing {
  public class AddTaskMaintenanceProcessor : IAddTaskMaintenanceProcessor {
    private readonly IAutoMapper _autoMapper;
    private readonly IAddTaskQueryProcessor _queryProcessor;

    public AddTaskMaintenanceProcessor(IAddTaskQueryProcessor queryProcessor, IAutoMapper autoMapper) {
      _queryProcessor = queryProcessor;
      _autoMapper = autoMapper;
    }

    public Models.Task AddTask(NewTask newTask) {
      var taskEntity = _autoMapper.Map<Data.Entities.Task>(newTask); 

      _queryProcessor.AddTask(taskEntity);

      var task = _autoMapper.Map<Models.Task>(taskEntity);

      return task;
    }
  }
}

Отображение объектов модели на объекты и обратно выглядит так:

namespace TaskManager.Web.Api.AutoMappingConfiguration {
  public class NewTaskToTaskEntityAutoMapperTypeConfigurator : IAutoMapperTypeConfigurator {
    public void Configure() {
      Mapper.Initialize(conf => {
        conf.CreateMap<NewTask, TaskManager.Data.Entities.Task>()
          .ForMember(opt => opt.Version, x => x.Ignore())
          .ForMember(opt => opt.CreatedBy, x => x.Ignore())
          .ForMember(opt => opt.TaskId, x => x.Ignore())
          .ForMember(opt => opt.CreatedDate, x => x.Ignore())
          .ForMember(opt => opt.CompletedDate, x => x.Ignore())
          .ForMember(opt => opt.Status, x => x.Ignore())
          .ForMember(opt => opt.Users, x => x.Ignore());
      });
    }
  }
}

И другой файл:

namespace TaskManager.Web.Api.AutoMappingConfiguration {
  public class TaskEntitiyToTaskAutoMapperTypeConfigurator : IAutoMapperTypeConfigurator {
    public void Configure() {
      Mapper.Initialize(conf => {
        conf.CreateMap<Task, Models.Task>()
        .ForMember(opt => opt.Links, x => x.Ignore())
        .ForMember(opt => opt.Status, x => x.Ignore())
        .ForMember(opt => opt.Assignees, x => x.ResolveUsing<TaskAssigneesResolver>());
      });
    }
  }
}

Мои вопросы:

В чем может быть проблема с моим кодом?

Нужно ли обновлять версию AutoMapper?

...