Automapper и Autofac
Я пытаюсь заставить Automapper хорошо играть с Autofac в приложении ASP.Net MVC.
Я следовал инструкциям в ответе на это: Autofac 3 и Automapper
Однако это не удается при первом вызове _mapper.Map<>(...)
Autofac настроен так:
builder.RegisterType<EntityMappingProfile>().As<Profile>();
builder.Register(ctx => new ConfigurationStore(new TypeMapFactory(), MapperRegistry.Mappers))
.AsImplementedInterfaces()
.SingleInstance()
.OnActivating(x =>
{
foreach (var profile in x.Context.Resolve<IEnumerable<Profile>>())
{
x.Instance.AddProfile(profile);
}
});
builder.RegisterType<MappingEngine>().As<IMappingEngine>();
и затем в моем бизнес-слое у меня есть сервис как это:
public class LinkService : ILinkService
{
private readonly ILinkRepository _linkRepository;
private readonly IMappingEngine _mapper;
public LinkService(ILinkRepository linkRepository, IMappingEngine mapper)
{
_linkRepository = linkRepository;
_mapper = mapper;
}
public IEnumerable<LinkEntity> Get()
{
var links = _linkRepository.Get().ToList();
return _mapper.Map<IEnumerable<Link>, IEnumerable<LinkEntity>>(links);
}
public LinkEntity GetById(int id)
{
var link = _linkRepository.GetById(id);
return _mapper.Map<Link, LinkEntity>(link);
}
}
Призыв к _mapper.Map<IEnumerable<Link>, IEnumerable<LinkEntity>>
не удается с:
Отсутствует конфигурация карты типов или неподдерживаемое отображение.
Есть идеи, где я могу пойти не так?
1 ответ
Решение
Вам не хватает создания Mapper, создать карту Link to LinkEntity в EntityMappingProfile:
internal class EntityMappingProfile :Profile
{
protected override void Configure()
{
base.Configure();
this.CreateMap<Link, LinkEntity>();
}
}