У меня возникла ситуация, когда мне пришлось изменить подпись с IQueryable
на IEnumerable
, и метод расширения .ProjectTo()
в AutoMapper перестал работать. Мне нужен альтернативный вариант, и какие изменения в отображении нужно внести, если таковые имеются?
public class PersonService : IPersonService
{
private readonly IPlaygroundBiRepository _repository;
private readonly IMapper _autoMapper;
public PersonService(IPlaygroundBiRepository repository, IMapper autoMapper)
{
_repository = repository;
_autoMapper = autoMapper;
}
public async Task<PersonViewModel> GetPersonByIdAsync(int id) => new PersonViewModel(await _repository.GetPersonByIdAsync(id));
public IEnumerable<PersonViewModel> GetPersons() => _repository.GetPersons().ProjectTo<PersonViewModel>(_autoMapper.ConfigurationProvider);
}
Вот как AutoMapper настраивается в инфраструктурном проекте:
namespace DesignTracker.Application.AutoMapper
{
public class AutoMapperConfiguration
{
public static MapperConfiguration RegisterMappings()
{
return new MapperConfiguration(cfg =>
{
// cfg.AddProfile(new ViewModelToDomainProfile());
cfg.AddProfile(new DomainToViewModelProfile());
});
}
}
public class DomainToViewModelProfile : Profile
{
public DomainToViewModelProfile()
{
CreateMap<Person, PersonViewModel>();
}
}
}