feat: Implementiere kaskadierende Löschung für die User-Entität im UserRepository

- Überriding der DeleteAsync-Methode hinzugefügt, um verwandte ModuleOfUser- und GroupOfUser-Entitäten zu behandeln.
- Sicherstellung der Entfernung verwandter Datensätze bei der Löschung eines Benutzers.
- TODO-Kommentar hinzugefügt, um zu empfehlen, .OnDelete(DeleteBehavior.ClientCascade) im DbContext für ein verbessertes Verhalten zu verwenden.
This commit is contained in:
Developer 02
2024-10-29 16:13:58 +01:00
parent ae14f5842e
commit 622cb1f702
2 changed files with 30 additions and 1 deletions

View File

@@ -44,5 +44,19 @@ namespace DigitalData.UserManager.Infrastructure.Repositories
{
return await _dbSet.Where(user => user.Username == username).FirstOrDefaultAsync();
}
//TODO: instead of this implmenet .OnDelete(DeleteBehavior.ClientCascade) in DbContext
public override async Task<bool> DeleteAsync(User user)
{
IEnumerable<ModuleOfUser> mou = await _moduleOfUserRepo.ReadByUserAsync(user.Username);
if(mou.Any())
_dbContext.RemoveRange(mou);
IEnumerable<GroupOfUser> gou = await _groupOfUserRepo.ReadByUsernameAsync(user.Username);
if(gou.Any())
_dbContext.RemoveRange(gou);
return await base.DeleteAsync(user);
}
}
}