由于某些原因,我在AutoMapper映射定义中使用的循环迭代次数超过了应有的次数。
映射定义如下:
在
编辑:使用循环,我有以下断点-
第一次正常通过 - 断点1 -> 断点2 -> 断点3。然后它会回到2,再到3,这是预期的。奇怪的是,它会跳回断点1,重新开始整个过程。
我不确定是否有模式。两个数组值需要六次通过。一个数组值需要四次通过。
编辑2:我的直觉是正确的 - BeforeMap 触发了多次。
编辑3:问题在 AfterMap 中仍然存在。该方法每次映射执行多次。
映射定义如下:
Mapper.CreateMap<AdminGameEditModel, Game>()
.BeforeMap((s, d) =>
{
foreach (var platId in s.PlatformIDs)
{
Platform newPlat = _gameRepository.GetPlatform(platId);
d.Platforms.Add(newPlat);
}
})
.ForMember(dest => dest.BoxArtPath, opt => opt.Ignore())
.ForMember(dest => dest.IndexImagePath, opt => opt.Ignore())
.ForMember(dest => dest.Cons, opt => opt.MapFrom(src => String.Join("|", src.Cons)))
.ForMember(dest => dest.Pros, opt => opt.MapFrom(src => String.Join("|", src.Pros)))
.ForMember(dest => dest.LastModified, opt => opt.UseValue(DateTime.Now))
.ForMember(dest => dest.Platforms, opt => opt.Ignore());
在
BeforeMap
中的foreach循环会出现某种原因导致对s.PlatformIDs数组进行多次迭代。例如,如果它包含两个值,我将得到六个或更多迭代,其中重复了两个期望的值。PlatformIDs不是定义为二维数组,并且调试器确认数组只包含应有的值,没有重复的集合。我困惑于可能导致这种情况发生的原因。编辑:使用循环,我有以下断点-
.BeforeMap((s, d) =>
{
foreach (var platId in s.PlatformIDs) // breakpoint 1
{
Platform newPlat = _gameRepository.GetPlatform(platId); // breakpoint 2
d.Platforms.Add(newPlat);
} // breakpoint 3
})
第一次正常通过 - 断点1 -> 断点2 -> 断点3。然后它会回到2,再到3,这是预期的。奇怪的是,它会跳回断点1,重新开始整个过程。
我不确定是否有模式。两个数组值需要六次通过。一个数组值需要四次通过。
编辑2:我的直觉是正确的 - BeforeMap 触发了多次。
编辑3:问题在 AfterMap 中仍然存在。该方法每次映射执行多次。