为什么在尝试使用AutoMapper时出现异常?

时间:2019-09-30 10:24:32

标签: c# .net .net-core automapper

我在.NET CORE 2.2项目中使用AutoMapper。

我收到此异常:

  

缺少类型映射配置或不支持的映射。   映射类型:   SaveFridgeTypeModel-> FridgeType   College.Refrigirator.Application.SaveFridgeTypeModel->   College.Refrigirator.Domain.FridgeType

在此行上:

List<Integer> toReverse = new ArrayList<>(list.subList(startIndex, endIndex+1));

这是FridgeType类的定义:

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

这是SaveFridgeTypeModel类的定义:

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; }
}

我添加此行:

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

要在Startup类中配置ConfigureServices函数。

更新

我忘记在帖子中添加mappin配置。

这里是映射配置类:

    services.AddAutoMapper(typeof(Startup));

知道为什么我会收到上述异常吗?

2 个答案:

答案 0 :(得分:2)

向DI注册自动映射器时,需要使用地图所在程序集中的类型。

AddAutomapper(typeof(ViewModelToEntityProfile));

如果您有多个带有地图的程序集-您可以使用另一个重载:

AddAutomapper(typeof(ViewModelToEntityProfile), typeof(SomeOtherTypeInOtherAssembly));

答案 1 :(得分:-1)

创建映射配置类后,您需要在Startup.cs中添加AutoMapperConfiguration,如下所示:

  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();
}