自动映射器将异常与列表映射到列表
本文关键字:列表 映射 异常 | 更新日期: 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();