Junior — Middle
Kaip struktūrizavote sąveiką su duomenų baze savo projektuose?
sobes.tech AI
Atsakymas iš AI
Mano projektuose paprastai struktūruoju sąveiką su duomenų baze taip:
- Duomenų prieigos sluoksnis (DAL) — atskiras sluoksnis arba klasių rinkinys, atsakingas už tiesioginį sąveiką su duomenų baze (pvz., per ORM arba ADO.NET).
- Saugyklos (Repositories) — modelis, kuris inkapsuliuoja užklausų ir operacijų logiką su konkrečiomis entitetais, suteikdamas patogų sąsają verslo logikai.
- Darbo vienetas (Unit of Work) — transakcijų ir duomenų nuoseklumo valdymui.
Pavyzdys C# su 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);
}
Šis požiūris palengvina testavimą, priežiūrą ir projekto mastelį.