using Interfaces; using System; using System.CodeDom; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DAL.Repositories { public class EFRepository : IRespository where TEntity : class { protected DbContext RepositoryDbContext; protected DbSet RepositoryDbSet; public EFRepository(DbContext dbContext) { if (dbContext == null) { throw new ArgumentNullException(nameof(dbContext)); } RepositoryDbContext = dbContext; RepositoryDbSet = dbContext.Set(); if (RepositoryDbSet == null) { throw new NullReferenceException(nameof(RepositoryDbSet)); } } public List All { get { var resCount = RepositoryDbSet.Count(); if (resCount < 10) { return RepositoryDbSet.ToList(); } throw new Exception("To many records in result set. Custom data access method needed"); } } public TEntity Find(int id) { RepositoryDbSet.Find(id); } public void Remove(int id) { Remove(Find(id)); } public void Remove(TEntity entity) { RepositoryDbSet.Remove(entity); } public TEntity Add(TEntity entity) { return RepositoryDbSet.Add(entity); } public void Update(TEntity entity) { RepositoryDbSet.Attach(entity); } public int SaveChanges() { return RepositoryDbContext.SaveChanges(); } } }