Sobes.tech
Junior — Middle

Come hai strutturato l'interazione con il database nei tuoi progetti?

sobes.tech AI

Risposta dell'AI

Nei miei progetti, strutturo generalmente l'interazione con il database nel seguente modo:

  1. Strato di accesso ai dati (DAL) — uno strato o un insieme di classi responsabili dell'interazione diretta con il database (ad esempio, tramite ORM o ADO.NET).
  2. Repository — pattern che incapsula la logica delle query e delle operazioni con entità specifiche, fornendo un'interfaccia comoda per la logica di business.
  3. Unità di lavoro (Unit of Work) — per gestire transazioni e coerenza dei dati.

Esempio in C# con 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);
}

Questo approccio facilita il testing, la manutenzione e la scalabilità del progetto.