Herhangi bir nedenle, AutoMapper harita tanımında kullandığım bir döngü, olması gerekenden daha fazla yineleniyor.Bir AutoMapper haritasında bir foreach içinde ekstra iterasyonlar
haritası tanımı: BeforeMap
yılında
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());
foreach, bazı nedenlerden dolayı, s.PlatformIDs dizisi birden fazla kez yineleme olacak. Yani, örneğin, iki değer içeriyorsa, iki beklenen değer tekrarlanarak altı veya daha fazla yineleme alacağım. PlatformID'ler, iki boyutlu bir dizi olarak tanımlanmış değil değil ve hata ayıklayıcı, dizinin yalnızca yinelenen kümeler olmadan, olması gereken değerleri içerdiğini doğrular.
Neye neden olabileceğine dair şaşkınım.
DÜZENLEME: döngü ile, ben şu kesme noktaları var -
.BeforeMap((s, d) =>
{
foreach (var platId in s.PlatformIDs) // breakpoint 1
{
Platform newPlat = _gameRepository.GetPlatform(platId); // breakpoint 2
d.Platforms.Add(newPlat);
} // breakpoint 3
})
ilk geçiş normaldir -> 2 çalışma noktasının - - 1 çalışma noktasının> Daha sonra 2'ye geri döner 3. çalışma noktasının , sonra beklenen 3'e. Garip olan şey, daha sonra 1 kırılma noktasına geri sıçraması ve işlemi tekrar başlatmasıdır.
Bir desen olup olmadığından emin değilim. İki dizi değeri altı geçişle sonuçlanır. Bir dizi değeri dört geçişle sonuçlanır.
DÜZENLEME 2: My önsezi haklıydı - BeforeMap
kereden fazla ateş ediyor.
DÜZENLEME 3: problemi de AfterMap
devam etmektedir. Yöntem, eşleme başına birden çok kez yürütülür.
Döngüyü aştınız mı? – boca
Evet ve olması gerekenden daha çok yineleniyor. Daha fazla ayrıntı için benim düzenime bakın –
Acaba Acaba TimeMap aslında birden çok kez ateş ediyor mu? –