public virtual void Update(params T[] items) { using (var context = new PookDbContext()) { foreach (T item in items) { item.UpdatedOn = DateTime.Now; T attachedEntity = context.Set <T>().SingleOrDefault(e => e.Id == item.Id); if (attachedEntity != null) { var entry = context.Entry(attachedEntity); entry.CurrentValues.SetValues(item); // Attach user entity and set all properties as modified entry.State = EntityState.Modified; if (IgnoreProperties != null && IgnoreProperties.Count > 0) { foreach (var ignoreProperty in IgnoreProperties) { entry.Property(ignoreProperty).IsModified = false; } } entry.Property(i => i.CreatedOn).IsModified = false; entry.Property(i => i.CreatedBy).IsModified = false; } } context.SaveChanges(); } }
public virtual IList <T> GetAll() { List <T> list; using (var context = new PookDbContext()) { IQueryable <T> dbQuery = context.Set <T>(); // Apply eager loading if (NavigationProperties != null && NavigationProperties.Count > 0) { dbQuery = NavigationProperties.Aggregate(dbQuery, (current, navigationProperty) => current.Include(navigationProperty)); } // Apply sorting dbQuery = OrderBy(dbQuery); list = dbQuery .AsNoTracking() .ToList(); } return(list); }
public virtual T GetSingle(Guid id) { T item; using (var context = new PookDbContext()) { IQueryable <T> dbQuery = context.Set <T>(); // Apply eager loading if (NavigationProperties != null && NavigationProperties.Count > 0) { dbQuery = NavigationProperties.Aggregate(dbQuery, (current, navigationProperty) => current.Include(navigationProperty)); } item = dbQuery .AsNoTracking() .FirstOrDefault(b => b.Id == id); } if (item == null) { throw new NotFoundException($"The provided Id ({id}) is not found in {typeof(T)} table"); } return(item); }
public virtual T GetFirst() { T item; using (var context = new PookDbContext()) { IQueryable <T> dbQuery = context.Set <T>(); item = dbQuery .AsNoTracking() .FirstOrDefault(); } return(item); }
public virtual bool Exists(Guid id) { bool exists; using (var context = new PookDbContext()) { IQueryable <T> dbQuery = context.Set <T>(); exists = dbQuery .AsNoTracking() .Any(obj => obj.Id == id); } return(exists); }
public virtual T GetLastCreated() { T item; using (var context = new PookDbContext()) { IQueryable <T> dbQuery = context.Set <T>(); item = dbQuery .AsNoTracking() .OrderByDescending(obj => obj.CreatedOn) .FirstOrDefault(); } return(item); }
public virtual IList <T> GetList(Expression <Func <T, bool> > where) { List <T> list; using (var context = new PookDbContext()) { IQueryable <T> dbQuery = context.Set <T>(); context.Configuration.ProxyCreationEnabled = false; // Apply eager loading if (NavigationProperties != null && NavigationProperties.Count > 0) { dbQuery = NavigationProperties.Aggregate(dbQuery, (current, navigationProperty) => current.Include(navigationProperty)); } dbQuery = dbQuery .AsNoTracking() .Where(where); // Set total number of records if (PagingSettings != null) { PagingSettings.TotalNumberOfRecords = dbQuery.Count(); } // Apply sorting dbQuery = OrderBy(dbQuery); // Retrieve data if (PagingSettings != null) { dbQuery = dbQuery .Skip((PagingSettings.Page - 1) * PagingSettings.PageSize) .Take(PagingSettings.PageSize); } list = dbQuery.ToList(); // Set number of records if (PagingSettings != null) { PagingSettings.NumberOfRecords = list.Count; } } return(list); }
public virtual int GetCount(Expression <Func <T, bool> > where) { int count; using (var context = new PookDbContext()) { IQueryable <T> dbQuery = context.Set <T>(); dbQuery = dbQuery.AsNoTracking(); if (where != null) { dbQuery = dbQuery.Where(where); } // Set total number of records count = dbQuery.Count(); } return(count); }
public virtual T GetSingle(Expression <Func <T, bool> > where) { T item; using (var context = new PookDbContext()) { IQueryable <T> dbQuery = context.Set <T>(); // Apply eager loading if (NavigationProperties != null && NavigationProperties.Count > 0) { dbQuery = NavigationProperties.Aggregate(dbQuery, (current, navigationProperty) => current.Include(navigationProperty)); } item = dbQuery .AsNoTracking() .FirstOrDefault(where); } return(item); }