自动映射器抛出 System.Reflection.AmbigouslyMatchException:发现不明确的匹配

Mus*_*afa 5 c# reflection exception automapper asp.net-core

我有一段代码抛出异常,但我不太明白为什么。

 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);
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我设法解决了以下问题。知道为什么这有效就好了。

  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);
    }
Run Code Online (Sandbox Code Playgroud)

类别和类别Vm

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; }
}
Run Code Online (Sandbox Code Playgroud)

Tro*_*xey 14

就我而言,原因是.OrderBy()在映射之前使用 Automapper 11.0.0 的方法。我的解决方法是事后使用排序。该问题在11.0.1及之后修复

  • 谢谢,当我将 Automapper 版本从 11.0.0 切换到 10.1.0 时,它工作得很好。没想到真的是这样。 (2认同)
  • 我最好使用新的 11.0.1 版本,这个问题得到了解决 (2认同)