【发布时间】:2020-06-09 20:11:47
【问题描述】:
我正在使用 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 服务正在访问一个类库,然后将调用 EF 来获取数据,但是当我到达var mappedRequest = _mapper.Map<getProposalListRequest, Data.Models.getProposalListRequest>(request); 行时,我得到了错误
AutoMapper.AutoMapperMappingException: '缺少类型映射配置或不支持的映射。'
对于解决此问题的任何和所有帮助,我将不胜感激。
谢谢
【问题讨论】:
-
您已经从
Data.Models.getProposalListRequest映射到getProposalListRequest,但反之则不然。如果要双向绘制地图,则需要为两个方向创建地图。 -
@Charleh 我都试过了,把它们换成圆形和反向地图,仍然遇到同样的问题
标签: c# .net automapper