Почему я получаю исключение при попытке использовать AutoMapper? - PullRequest
0 голосов
/ 30 сентября 2019

Я использую AutoMapper в своем проекте .NET CORE 2.2.

Я получаю это исключение:

Отсутствует конфигурация карты типов или неподдерживаемое отображение. Типы сопоставления: SaveFridgeTypeModel -> FridgeType College.Refrigirator.Application.SaveFridgeTypeModel -> College.Refrigirator.Domain.FridgeType

В этой строке:

var fridgeType = _mapper.Map<SaveFridgeTypeModel, FridgeType>(model);

Здесь указано значение Fridgeкласс:

public class FridgeType : IEntity , IType
{
    public FridgeType()
    {
        Fridges = new HashSet<Fridge>();
    }
    public int ID { get; set; }
    //Description input should be restricted 
    public string Description { get; set; }
    public string Text { get; set; }
    public ICollection<Fridge> Fridges { get; private set; }
}

Вот определение класса SaveFridgeTypeModel:

public class SaveFridgeTypeModel
{
    public string Description { get; set; }
    public string Text { get; set; }
}

Я добавляю эту строку:

    services.AddAutoMapper(typeof(Startup));

Для функции ConfigureServices в классе запуска.

ОБНОВЛЕНИЕ

Я забыл добавить конфигурацию mappin к сообщению.

Вот класс конфигов отображения:

public class ViewModelToEntityProfile : Profile
{
    public ViewModelToEntityProfile()
    {
        CreateMap<SaveFridgeTypeModel, FridgeType>();
    }
}

Любая идеяпочему я получаю исключение выше?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Вам нужно использовать тип из сборки, в которой находятся ваши карты, при регистрации автомпера с помощью DI.

AddAutomapper(typeof(ViewModelToEntityProfile));

Если у вас было несколько сборок с картами - вы можете использовать другую перегрузку:

AddAutomapper(typeof(ViewModelToEntityProfile), typeof(SomeOtherTypeInOtherAssembly));
0 голосов
/ 30 сентября 2019

После создания класса конфигурации сопоставления вам необходимо добавить AutoMapperConfiguration в Startup.cs, как показано ниже:

  public void ConfigureServices(IServiceCollection services) {
    // .... Ignore code before this

   // Auto Mapper Configurations
    var mappingConfig = new MapperConfiguration(mc =>
    {
        mc.AddProfile(new ViewModelToEntityProfile());
    });

    IMapper mapper = mappingConfig.CreateMapper();
    services.AddSingleton(mapper);

    services.AddMvc();
}
...