using System; using ContosoUniversity.Models; namespace ContosoUniversity.DAL { public class UnitOfWork : IDisposable { private SchoolContext context = new SchoolContext(); private GenericRepository departmentRepository; private GenericRepository courseRepository; public GenericRepository DepartmentRepository { get { return this.departmentRepository ?? new GenericRepository(context); } } public GenericRepository CourseRepository { get { return this.courseRepository ?? new GenericRepository(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); } } }