Sobes.tech
Back to questions
Junior — Middle
68

Каким образом вы структурировали взаимодействие с базой данных в своих проектах?

Answer from AI

sobes.tech AI

В своих проектах я обычно структурирую взаимодействие с базой данных следующим образом:

  1. Слой доступа к данным (DAL) — отдельный слой или набор классов, отвечающих за прямое взаимодействие с БД (например, через ORM или ADO.NET).
  2. Репозитории — паттерн, который инкапсулирует логику запросов и операций с конкретными сущностями, предоставляя удобный интерфейс для бизнес-логики.
  3. Юнит работы (Unit of Work) — для управления транзакциями и согласованностью данных.

Пример на C# с использованием 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);
}

Такой подход облегчает тестирование, поддержку и масштабирование проекта.