Junior — Middle
Comment avez-vous structuré l'interaction avec la base de données dans vos projets?
sobes.tech IA
Réponse de l'IA
Dans mes projets, j'organise généralement l'interaction avec la base de données de la manière suivante :
- Couche d'accès aux données (DAL) — une couche ou un ensemble de classes responsables de l'interaction directe avec la base de données (par exemple, via ORM ou ADO.NET).
- Dépôts — un pattern qui encapsule la logique des requêtes et des opérations sur des entités spécifiques, fournissant une interface pratique pour la logique métier.
- Unité de travail (Unit of Work) — pour gérer les transactions et la cohérence des données.
Exemple en C# avec Entity Framework :
public interface IRepository<T> where T : class
{
Task<T> GetByIdAsync(int id);
Task<IEnumerable<T>> GetAllAsync();
void Add(T entity);
void Remove(T entity);
}
public class Repository<T> : IRepository<T> where T : class
{
protected readonly DbContext _context;
public Repository(DbContext context) { _context = context; }
public async Task<T> GetByIdAsync(int id) => await _context.Set<T>().FindAsync(id);
public async Task<IEnumerable<T>> GetAllAsync() => await _context.Set<T>().ToListAsync();
public void Add(T entity) => _context.Set<T>().Add(entity);
public void Remove(T entity) => _context.Set<T>().Remove(entity);
}
Cette approche facilite les tests, la maintenance et la scalabilité du projet.