gpt4 book ai didi

c# - 如何关闭 AutoMapper 自动列表在 List 和 EntitySet 之间的转换?

转载 作者:行者123 更新时间:2023-11-30 12:53:50 26 4
gpt4 key购买 nike

我正在使用 AutoMapper 将 Linq-To-SQL 生成的实体映射到 DTO .

当我最初创建单元测试时,我设置了特定映射(通过静态配置类)以将一种类型的 EntitySet 转换为通用列表(反之亦然)

Mapper.CreateMap<EntitySet<Member>, List<MemberDTO>>(); 
Mapper.CreateMap<List<MemberDTO>, EntitySet<Member>>();

删除列表转换后(在发现 AutoMapper 会自动转换这些转换后),我的单元测试仍然有效,但速度变慢了。它非常慢,执行每个测试几乎需要一分钟。

重新添加列表映射后,单元测试恢复了正常的性能速度。

有没有办法关闭列表的这种自动转换,以便我必须映射我的列表转换?如果我未能包含 Map,我希望它抛出 AutoMapperException。我想避免这些性能问题。

如果情况变得更糟,我可能最终会编写一个快速代码生成模板,以根据 DTO 自动创建我的映射配置类。这样,我就不会错过任何东西。

谢谢。

最佳答案

任何 CreateMap 调用都不需要在每个 AppDomain 中发生多次,包括测试和生产代码。我们有一个静态方法,仔细检查锁定以确保配置只发生一次。配置是静态缓存的,因此无需多次执行。

但是,假设您设置了 Member -> MemberDTO 映射,这些转换应该“正常工作”,反之亦然。我将为 List<> -> EntitySet<> 运行几个冒烟测试以确保它正常工作。

关于c# - 如何关闭 AutoMapper 自动列表在 List<T> 和 EntitySet<T> 之间的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1440632/

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