缺少类型映射配置或不支持的映射。自动映射器

时间:2019-03-19 13:29:06

标签: c# asp.net asp.net-web-api mapping automapper

我在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);
         }
     }

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。 在我的FormulaComponent类中,对于Component类而言,名称解析不正确:  System.ComponentModel代替Domain.Components