Sobes.tech
Junior — Middle

Hoe hebt u de interactie met de database gestructureerd in uw projecten?

sobes.tech AI

Antwoord van AI

In mijn projecten structureer ik de interactie met de database meestal als volgt:

  1. Data Access Layer (DAL) — een laag of set van klassen die verantwoordelijk zijn voor de directe interactie met de database (bijvoorbeeld via ORM of ADO.NET).
  2. Repositories — een patroon dat de logica van queries en operaties met specifieke entiteiten inkapselt, en een handige interface biedt voor de bedrijfslogica.
  3. Unit of Work — voor het beheren van transacties en dataconsistentie.

Voorbeeld in C# met 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);
}

Deze aanpak maakt het testen, onderhoud en schaalbaarheid van het project gemakkelijker.