我在.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));
知道为什么我会收到上述异常吗?
答案 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();
}