I have a piece of code that throws exception and I dont quite understand why.
public async Task<List<CategoryVm>> Handle(GetCategoriesListQuery request, CancellationToken cancellationToken)
{
var categories = (await _categoryRepository.ListAllAsync()).OrderBy(x => x.Name);
// var list = categories.ToList();
return _mapper.Map<List<CategoryVm>>(categories);
}
I managed to get around problem as below. Would be be nice know why this works.
public async Task<List<CategoryVm>> Handle(GetCategoriesListQuery request, CancellationToken cancellationToken)
{
var categories = (await _categoryRepository.ListAllAsync()).OrderBy(x => x.Name);
var list = categories.ToList();
return _mapper.Map<List<CategoryVm>>(list);
}
Category and CategoryVm
public class CategoryVm
{
public Guid CategoryId { get; set; }
public string Name { get; set; }
}
public class Category: AuditableEntity
{
public Guid CategoryId { get; set; }
public string Name { get; set; }
public ICollection<Event> Events { get; set; }
}
In my case, the cause was using .OrderBy() method. My workaround was to use ordering afterwards mapping.
If that's important, I'm using Automapper 11.0.0
In AutoMapper version 11.0.1 (now available) this bug is solved: calling IMapper.Map after an OrderBy caused an AmbiguousMatchException in version 11.0.0.
(A link to this GitHub issue was shared by @Lucian Bargaoanu in a comment already, while the issue was in progress. Thanks for sharing!)