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)); }); }