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);
}
ეს მიდგომა ადვილად უწყობს ხელს ტესტირებას, შენარჩუნებას და პროექტის მასშტაბირებას.