Junior — Middle
Как структурирахте взаимодействието с базата данни във вашите проекти?
sobes.tech AI
Отговор от AI
В проектите си обикновено структурирам взаимодействието с базата данни по следния начин:
- Слой за достъп до данни (DAL) — отделен слой или набор от класове, отговорни за директното взаимодействие с базата данни (например чрез ORM или ADO.NET).
- Репозитории — шаблон, който инкапсулира логиката на заявки и операции с конкретни същности, предоставяйки удобен интерфейс за бизнес логиката.
- Единица за работа (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);
}
Този подход улеснява тестването, поддръжката и мащабирането на проекта.