自动映射器将异常与列表映射到列表

本文关键字:列表 映射 异常 | 更新日期: 2023-09-27 18:00:58

我的Automapper有问题。我的映射调用看起来像:

var dataContracts = MapperManager.Mapper.Map<List<Employee>, List<EmployeeDTO>>(entities.ToList());

实体是IQueryable<Employee>

在我的Mapper助手类中,我有:

public class MapperManager
{
    public static MapperConfiguration MapperConfiguration { get; set; }
    private static IMapper _mapper { get; set; }
    public static IMapper Mapper
    {
        get
        {
            if (_mapper == null) {
                _mapper = MapperConfiguration.CreateMapper();                    
            }
            return _mapper;
        }
    }
    public static void RegisterMappinngs()
    {
        MapperConfiguration = new MapperConfiguration(cfg =>
        {
            ...
            cfg.CreateMap<Employee, EmployeeDTO>().MaxDepth(5);
            ...
        }
    }
}

RegisterMappings在Global.asax中的AppStartup上调用一次之后我有地图操作中的异常:

var dataContracts = MapperManager.Mapper.Map<List<Employee>, List<EmployeeDTO>>(entities.ToList());

映射类型时出错。

映射类型:列表`1->列表`1 System.Collections.Generic.List`1[[NAMESPACE.Employe,ASSEMBLY,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]->System.Collections.Generic.List`1[[NAMESPACE2.EmployeeDTO,ASSEMBLY2,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]

任何人都可以知道我做错了什么?

向致以最良好的问候

自动映射器将异常与列表映射到列表

好的,答案是:

MapperConfiguration.AssertConfigurationIsValid((

当我调用它时,我在另一个Employee属性的深处得到了具有未映射属性的AMConfigurationException。

感谢您的建议

在我的案例中,这是因为它试图映射本应被忽略的ID

我收到了这个错误,我能够在生产中运行它,但单元测试失败了,失败了,又失败了。

如果您设置了自己的映射器配置,请确保包含您的配置文件。还要仔细检查映射

var mappingConfig = new MapperConfiguration(mc =>
        {
            mc.AddProfile(new MyMissingProfile());
        });
        
        _mapper = mappingConfig.CreateMapper();