Junior — Middle
W jaki sposób zorganizowałeś interakcję z bazą danych w swoich projektach?
sobes.tech AI
Odpowiedź od AI
W moich projektach zazwyczaj strukturyzuję interakcję z bazą danych w następujący sposób:
- Warstwa dostępu do danych (DAL) — oddzielna warstwa lub zestaw klas odpowiedzialnych za bezpośrednią interakcję z bazą danych (np. przez ORM lub ADO.NET).
- Repozytoria — wzorzec, który enkapsuluje logikę zapytań i operacji na konkretnych encjach, zapewniając wygodny interfejs dla logiki biznesowej.
- Jednostka pracy (Unit of Work) — do zarządzania transakcjami i spójnością danych.
Przykład w C# z użyciem 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);
}
Takie podejście ułatwia testowanie, utrzymanie i skalowanie projektu.