我在Web Api项目中将Automapper与NPoco一起使用。 这是我的Dto和型号:
[TableName("Component")]
public class ComponentDto
{
[Column("Id")]
public int Id { get; set; }
public string BotanicalName { get; set; }
}
[TableName("FormulaComponent")]
public class FormulaComponentDto
{
[Column("Id")]
public int Id { get; set; }
[Reference(ReferenceType.Foreign, ColumnName = "ComponentId", ReferenceMemberName = "Id")]
public ComponentDto Component { get; set; }
}
public class Component
{
public int Id { get; set; }
public string BotanicalName { get; set; }
}
public class FormulaComponent
{
public int Id { get; set; }
public Component Component { get; set; }
}
我正在尝试使用Automapper将一个模型映射到另一个模型。这是我的自动映射器个人资料:
public class AutoMapperProfile : Profile
{
protected override void Configure()
{
//From Model to Dto
Mapper.CreateMap<FormulaComponent, FormulaComponentDto>().ReverseMap();
Mapper.CreateMap<ComponentDto, Component>().ReverseMap();
}
}
但是当我尝试时,我有一个例外:“缺少类型映射配置或不支持的映射”:
public IEnumerable<FormulaComponent> GetAll()
{
var formulaComponents = _repository.Get().Include(x => x.Component).ToList();
return _mapper.Map<IEnumerable<FormulaComponentDto>, IEnumerable<FormulaComponent>>(formulaComponents);
}
UPD: 自动映射器初始化为LightInject:
public partial class Startup
{
public static void InitLightInject(HttpConfiguration config)
{
var container = new ServiceContainer();
Mapper.AddProfile<AutoMapperProfile>();
container.Register<IMappingEngine>(c => Mapper.Engine);
}
}
答案 0 :(得分:0)
我解决了这个问题。
在我的FormulaComponent
类中,对于Component
类而言,名称解析不正确:
System.ComponentModel
代替Domain.Components