gpt4 book ai didi

nhibernate - AutoMapper 限制映射深度或延迟映射

转载 作者:行者123 更新时间:2023-11-30 23:59:48 25 4
gpt4 key购买 nike

AutoMapper 很棒,节省了很多时间,但是当我开始查看我的应用程序的性能时,AutoMapper 负责性能损失。

我在 NHibernate 中使用延迟加载。大多数情况下,需要父实体而根本不需要访问子实体。实际上,AutoMapper 试图映射尽可能多的关系,导致 NHibernate 延迟加载所有子实体(我一直看到 SELECT N+1 发生)。

有没有办法限制 AutoMapper 的深度,或者 AutoMapper 是否可以懒惰地映射子实体?

最佳答案

您可以对不需要加载的关联使用 ignore 方法。

Mapper.CreateMap<User, UserDto>()
.ForMember(dest => dest.LazyCollection, opt => opt.Ignore())
.ForMember(dest => dest.AnotherLazyCollection, opt => opt.Ignore())
Mapper.CreateMap<UserProperty, UserPropertyDto>()
.ForMember(dest => dest.PropertyLazyReference, opt => opt.Ignore());
return Mapper.Map<User, UserDto>(user);

对于您知道在 dto 中需要的关联,您应该考虑使用初始查询更有效地获取这些关联的方法,但这是一个全新的问题。

关于nhibernate - AutoMapper 限制映射深度或延迟映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com