using GerbilManagerWebAPI.Models; using Microsoft.EntityFrameworkCore; namespace GerbilManagerWebAPI.DAL { public class UnitOfWork : IDisposable { private ApplicationContext context; private GenericRepository gerbilRepository; private GenericRepository litterRepository; private GenericRepository breederRepository; public GenericRepository GerbilRepository { get { if (this.gerbilRepository == null) { this.gerbilRepository = new GenericRepository(context); } return gerbilRepository; } } public GenericRepository LitterRepository { get { if (this.litterRepository == null) { this.litterRepository = new GenericRepository(context); } return litterRepository; } } public GenericRepository BreederRepository { get { if (this.breederRepository == null) { this.breederRepository = new GenericRepository(context); } return breederRepository; } } public UnitOfWork(ApplicationContext context) { this.context = context; } public void Save() { context.SaveChanges(); } private bool disposed = false; protected virtual void Dispose(bool disposing) { if (!this.disposed) { if (disposing) { context.Dispose(); } } this.disposed = true; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } } }