#146 Les méthodes Find(id) des repository utilisent SingleOrDefault. Les méthodes find du repository sont utilisées dans les méthodes update au lieu de refaire une requête. Paginate est remplacé par Find[Model] pour correspondre au cahier des charges.

This commit is contained in:
josephine.vetu
2026-04-02 14:41:01 +02:00
parent ae80c3e14e
commit 198b716074
9 changed files with 73 additions and 65 deletions

View File

@@ -78,7 +78,7 @@ namespace Webzine.Repository
{
Artiste artiste = this.context.Artistes
.Include(a => a.Titres)
.FirstOrDefault(a => a.IdArtiste == id);
.SingleOrDefault(a => a.IdArtiste == id);
return artiste;
}
catch (Exception ex)
@@ -112,11 +112,12 @@ namespace Webzine.Repository
try
{
// .AsNoTracking() rend la requête beaucoup plus rapide pour de la lecture
// Pas besoin de faire un ToList() ici, car on retourne un IEnumerable<Artiste> et EF Core gère l'exécution différée de la requête.
var artistes = this.context.Artistes
.AsNoTracking()
.Include(t => t.Titres)
.ToList();
this.logger.LogDebug("{Count} artistes récupérés de la base.", artistes.Count);
.Include(t => t.Titres);
this.logger.LogDebug("La liste d'artistes a été récupérée de la base.");
return artistes;
}
catch (Exception ex)
@@ -131,6 +132,13 @@ namespace Webzine.Repository
{
try
{
Artiste existingArtiste = this.Find(artiste.IdArtiste); // Vérifie que l'artiste existe avant de tenter de le mettre à jour
if (existingArtiste == null)
{
this.logger.LogWarning("L'artiste {Id} n'a pas été trouvé pour l'update.", artiste.IdArtiste);
throw new InvalidOperationException($"L'artiste avec l'ID {artiste.IdArtiste} n'a pas été trouvé pour la mise à jour.");
}
this.context.Artistes.Update(artiste);
this.context.SaveChanges();
this.logger.LogDebug("Artiste {Id} ({Nom}) mis à jour avec succès.", artiste.IdArtiste, artiste.Nom);
@@ -159,8 +167,7 @@ namespace Webzine.Repository
var artiste = this.context.Artistes
.Where(a => a.Nom.ToLower().Contains(mot.ToLower()))
.Include(t => t.Titres)
.AsNoTracking()
.ToList();
.AsNoTracking();
return artiste;
}
catch (Exception ex)