AutoMapper 9.0:AutoMapperMappingException:'Missing type map configuration or unsupported mapping.'
AutoMapper 9.0 : AutoMapperMappingException: 'Missing type map configuration or unsupported mapping.'
我正在使用 WCF 服务并已使用 AutoFac 设置 DI,并且还希望使用 automapper。我相信我的注入是正确的,因为当我进入希望调用的服务时可以看到我的配置。
在我的 global.asax 文件中我有这个配置;
protected void Application_Start(object sender, EventArgs e)
{
var builder = new ContainerBuilder();
builder.RegisterType<ProposalService>().As<IProposalService>();
builder.RegisterType<ProposalListService>().As<IProposalListService>();
builder.RegisterType<ProposalContext>().As<IProposalContext>();
builder.RegisterType<GetProposalListRequestProfile>().As<Profile>();
builder.Register(c => new MapperConfiguration(cfg =>
{
foreach (var profile in c.Resolve<IEnumerable<Profile>>())
{
cfg.AddProfile(profile);
}
})).AsSelf().SingleInstance();
builder.Register(c => c.Resolve<MapperConfiguration>().CreateMapper(c.Resolve)).As<IMapper>().InstancePerLifetimeScope();
AutofacHostFactory.Container = builder.Build();
}
在我希望使用的服务中,我有这个
public class ProposalListService : IProposalListService
{
private IProposalContext _proposalContext;
private IMapper _mapper;
public ProposalListService(IProposalContext proposlContext, IMapper mapper)
{
_proposalContext = proposlContext;
_mapper = mapper;
}
public getProposalListResponse GetProposalList(getProposalListRequest request)
{
var mappedRequest = _mapper.Map<getProposalListRequest, Data.Models.getProposalListRequest>(request);
var result = _proposalContext.GetProposalList(mappedRequest);
var mappedResponse = _mapper.Map<Data.Models.getProposalListResponse, getProposalListResponse>(result);
return mappedResponse;
}
}
我有这个映射配置文件
public class GetProposalListRequestProfile : Profile
{
public GetProposalListRequestProfile()
{
IMappingExpression<Data.Models.getProposalListRequest, getProposalListRequest>
mappingExpression =
CreateMap<Data.Models.getProposalListRequest, getProposalListRequest>()
.ForMember(dest => dest.getProposalList, opt => opt.MapFrom(src => src.getProposalList));
}
}
结构是
WCF 服务将转到 class 库,然后将调用 EF 获取数据,但是当我到达第 var mappedRequest = _mapper.Map<getProposalListRequest, Data.Models.getProposalListRequest>(request);
行时出现错误
AutoMapper.AutoMapperMappingException: 'Missing type map configuration or unsupported mapping.'
对于解决此问题的任何帮助,我将不胜感激。
谢谢
如果您检查 CreateMap
方法,您将看到下一个:
IMappingExpression<TSource, TDestination> CreateMap<TSource, TDestination>();
因此您的 CreateMap<Data.Models.getProposalListRequest, getProposalListRequest>()
将创建从 Data.Models.getProposalListRequest
到 getProposalListRequest
的映射,以便处理您的用例,您将添加还原的注册或尝试添加 .ReverseMap()
调用在 CreateMap
.
之后
我正在使用 WCF 服务并已使用 AutoFac 设置 DI,并且还希望使用 automapper。我相信我的注入是正确的,因为当我进入希望调用的服务时可以看到我的配置。
在我的 global.asax 文件中我有这个配置;
protected void Application_Start(object sender, EventArgs e)
{
var builder = new ContainerBuilder();
builder.RegisterType<ProposalService>().As<IProposalService>();
builder.RegisterType<ProposalListService>().As<IProposalListService>();
builder.RegisterType<ProposalContext>().As<IProposalContext>();
builder.RegisterType<GetProposalListRequestProfile>().As<Profile>();
builder.Register(c => new MapperConfiguration(cfg =>
{
foreach (var profile in c.Resolve<IEnumerable<Profile>>())
{
cfg.AddProfile(profile);
}
})).AsSelf().SingleInstance();
builder.Register(c => c.Resolve<MapperConfiguration>().CreateMapper(c.Resolve)).As<IMapper>().InstancePerLifetimeScope();
AutofacHostFactory.Container = builder.Build();
}
在我希望使用的服务中,我有这个
public class ProposalListService : IProposalListService
{
private IProposalContext _proposalContext;
private IMapper _mapper;
public ProposalListService(IProposalContext proposlContext, IMapper mapper)
{
_proposalContext = proposlContext;
_mapper = mapper;
}
public getProposalListResponse GetProposalList(getProposalListRequest request)
{
var mappedRequest = _mapper.Map<getProposalListRequest, Data.Models.getProposalListRequest>(request);
var result = _proposalContext.GetProposalList(mappedRequest);
var mappedResponse = _mapper.Map<Data.Models.getProposalListResponse, getProposalListResponse>(result);
return mappedResponse;
}
}
我有这个映射配置文件
public class GetProposalListRequestProfile : Profile
{
public GetProposalListRequestProfile()
{
IMappingExpression<Data.Models.getProposalListRequest, getProposalListRequest>
mappingExpression =
CreateMap<Data.Models.getProposalListRequest, getProposalListRequest>()
.ForMember(dest => dest.getProposalList, opt => opt.MapFrom(src => src.getProposalList));
}
}
结构是
WCF 服务将转到 class 库,然后将调用 EF 获取数据,但是当我到达第 var mappedRequest = _mapper.Map<getProposalListRequest, Data.Models.getProposalListRequest>(request);
行时出现错误
AutoMapper.AutoMapperMappingException: 'Missing type map configuration or unsupported mapping.'
对于解决此问题的任何帮助,我将不胜感激。
谢谢
如果您检查 CreateMap
方法,您将看到下一个:
IMappingExpression<TSource, TDestination> CreateMap<TSource, TDestination>();
因此您的 CreateMap<Data.Models.getProposalListRequest, getProposalListRequest>()
将创建从 Data.Models.getProposalListRequest
到 getProposalListRequest
的映射,以便处理您的用例,您将添加还原的注册或尝试添加 .ReverseMap()
调用在 CreateMap
.