From 8d98159ba8a946e7cad8f143bb78013e849fe99e Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Tue, 22 Apr 2025 17:33:55 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Korrektur=20der=20Update-=20und=20L?= =?UTF-8?q?=C3=B6schlogik=20in=20DbRepository=20zur=20Vermeidung=20von=20L?= =?UTF-8?q?aufzeitproblemen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DigitalData.Core.Infrastructure/DbRepository.cs | 10 +++++----- .../Infrastructure/DbRepositoryTests.cs | 15 +++++++-------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/DigitalData.Core.Infrastructure/DbRepository.cs b/DigitalData.Core.Infrastructure/DbRepository.cs index 74baf5d..4686043 100644 --- a/DigitalData.Core.Infrastructure/DbRepository.cs +++ b/DigitalData.Core.Infrastructure/DbRepository.cs @@ -42,10 +42,10 @@ public class DbRepository : IRepository where TDbC { var entities = await Entities.Where(expression).ToListAsync(ct); - foreach (var entity in entities) + for (int i = entities.Count - 1; i >= 0; i--) { - Mapper.Map(dto, entity); - Entities.Add(entity); + Mapper.Map(dto, entities[i]); + Entities.Update(entities[i]); } await Context.SaveChangesAsync(ct); @@ -55,9 +55,9 @@ public class DbRepository : IRepository where TDbC { var entities = await Entities.Where(expression).ToListAsync(ct); - foreach (var entity in entities) + for (int i = entities.Count - 1; i >= 0; i--) { - entities.Remove(entity); + Entities.Remove(entities[i]); } await Context.SaveChangesAsync(ct); diff --git a/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs b/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs index c30c577..507d6f0 100644 --- a/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs +++ b/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs @@ -22,7 +22,7 @@ public class DbRepositoryTests builder.Services.AddDbContext(opt => opt.UseInMemoryDatabase("MockDB")); - builder.Services.AddDbRepository(context => context.Users).UseAutoMapper(typeof(UserCreateDto), typeof(UserReadDto)); + builder.Services.AddDbRepository(context => context.Users).UseAutoMapper(typeof(UserCreateDto), typeof(UserReadDto), typeof(UserBase)); builder.Services.AddAutoMapper(Assembly.GetExecutingAssembly()); @@ -76,20 +76,19 @@ public class DbRepositoryTests { // Arrange var createdUser = await _userRepo.CreateAsync(Fake.UserCreateDto); - var readUser = await _userRepo.ReadFirstOrDefaultAsync(u => u.Id == createdUser.Id); + var userUpdateDto = new UserUpdateDto() { Age = 10, Email = "Bar", FirstName = "Foo" }; // Act - readUser!.FirstName = "Foo"; - readUser!.Email = "Bar"; - readUser!.Age = 10; - - var upToDateUser = await _userRepo.ReadFirstOrDefaultAsync(u => u.Id == createdUser.Id); + await _userRepo.UpdateAsync(userUpdateDto, u => u.Id == createdUser!.Id); + var upToDateUser = await _userRepo.ReadFirstOrDefaultAsync(u => u.Id == createdUser!.Id); // Assert Assert.Multiple(() => { Assert.That(upToDateUser, Is.Not.Null); - Assert.That(upToDateUser, Is.EqualTo(readUser)); + Assert.That(upToDateUser?.FirstName, Is.EqualTo(userUpdateDto.FirstName)); + Assert.That(upToDateUser?.Email, Is.EqualTo(userUpdateDto.Email)); + Assert.That(upToDateUser?.Age, Is.EqualTo(userUpdateDto.Age)); }); }