我们在Dot net应用程序中使用AutoMapper 3.1.1.0。我们有很多需要映射的类。初始化映射所需的时间几乎是 22 秒。我们有近 1327 个 DTO 需要映射。
我们可以说每个DTO平均具有8个属性。
我关心的是,对于我们签入 1327 个映射 DTO 列表的每条消息,
,然后使用
if (MappingManager.MessageMappings.ContainsKey(message.GetType()))
{
var myMessage = Mapper.Map(message, message.GetType(), MappingManagerFile.MessageMappings[message.GetType()]);
所以它会损害性能。我们需要在使用后处理,还是自动映射器自己照顾?在任务管理器中,执行此转换的组件占用大量内存。
因此,请建议我们需要使用哪些替代来提高性能。
更高版本的 AutoMapper 会延迟编译配置。仍然有一些启动时间,发现和映射类型,但编译运行时映射函数是懒惰完成的。
我建议尝试 5.0 版本并比较数字。
使用自动映射器映射这么多实体需要一些时间。 您是急于加载实体还是使用延迟加载? 我过去在使用延迟加载时见过这些问题,因为自动映射器在获取所有关系数据时会生成大量数据库命中。
预先加载可能是您最好的选择,或者我建议只加载您需要的内容。 似乎一次加载很多数据。