/// <summary> /// Updates the asynchronous. /// </summary> /// <param name="entity">The entity.</param> /// <returns></returns> public async Task UpdateAsync(TEntity entity) { try { _dbContext.Entry(entity).State = EntityState.Modified; await _dbContext.SaveChangesAsync().ConfigureAwait(false); } catch (DbEntityValidationException ex) { _status = new EntityStatus { Id = 0 }; _status.SetErrors(ex?.EntityValidationErrors); throw; } catch (DbUpdateException ex) { var decodedErrors = TryDecodeDbUpdateException(ex); if (decodedErrors != null) { _status = new EntityStatus { Id = 0 }; _status.SetErrors(decodedErrors); } throw; } }
/// <summary> /// Deletes the specified entity. /// </summary> /// <param name="entity">The entity.</param> /// <param name="omitExceptions">if set to <c>true</c> [omit exceptions].</param> /// <returns>true is operation correct</returns> /// <exception cref="NotImplementedException"></exception> public bool Delete(TEntity entity, bool omitExceptions) { bool result = false; try { _dbContext.Set <TEntity>().Remove(entity); _dbContext.SaveChanges(); result = true; } catch (Exception ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = 0 }; _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } return(result); }
/// <summary> /// Updates the range. /// </summary> /// <param name="entities">The entities.</param> /// <param name="omitExceptions">if set to <c>true</c> [omit exceptions].</param> /// <returns>Item1=operation result, Item2=List<typeparamref name="TEntity"/></returns> public Tuple <bool, List <TEntity> > UpdateRange(List <TEntity> entities, bool omitExceptions) { int id = 0; Tuple <bool, List <TEntity> > result = new Tuple <bool, List <TEntity> >(false, entities); try { foreach (var item in entities) { id = 0; _dbContext.Entry(item).State = EntityState.Modified; } _dbContext.SaveChanges(); result = new Tuple <bool, List <TEntity> >(true, entities); } catch (DbEntityValidationException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = id }; _status.SetErrors(ex?.EntityValidationErrors); } catch (DbUpdateException ex) { if (!omitExceptions) { throw; } var decodedErrors = TryDecodeDbUpdateException(ex); if (decodedErrors != null) { _status = new EntityStatus { Id = id }; _status.SetErrors(decodedErrors); } } catch (Exception ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = id }; _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } return(result); }
/// <summary> /// Updates the specified entity. /// </summary> /// <param name="entity">The entity.</param> /// <param name="omitExceptions">if set to <c>true</c> [omit exceptions].</param> /// <returns>operation result</returns> public bool Update(TEntity entity, bool omitExceptions) { bool result = false; try { _dbContext.Entry(entity).State = EntityState.Modified; _dbContext.SaveChanges(); result = true; } catch (DbEntityValidationException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = 0 }; _status.SetErrors(ex?.EntityValidationErrors); } catch (DbUpdateException ex) { if (!omitExceptions) { throw; } var decodedErrors = TryDecodeDbUpdateException(ex); if (decodedErrors != null) { _status = new EntityStatus { Id = 0 }; _status.SetErrors(decodedErrors); } } catch (Exception ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = 0 }; _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } return(result); }
/// <summary> /// Adds the specified entity. /// </summary> /// <param name="entity">The entity.</param> /// <param name="omitExceptions">if set to <c>true</c> [omit exceptions].</param> /// <returns>Item1=operation result, Item2=entity</returns> public Tuple <bool, TEntity> Add(TEntity entity, bool omitExceptions) { Tuple <bool, TEntity> result = new Tuple <bool, TEntity>(false, entity); try { _dbContext.Set <TEntity>().Add(entity); _dbContext.SaveChanges(); result = new Tuple <bool, TEntity>(true, entity); } catch (DbEntityValidationException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = 0 }; _status.SetErrors(ex?.EntityValidationErrors); } catch (DbUpdateException ex) { if (!omitExceptions) { throw; } var decodedErrors = TryDecodeDbUpdateException(ex); if (decodedErrors != null) { _status = new EntityStatus { Id = 0 }; _status.SetErrors(decodedErrors); } } catch (Exception ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = 0 }; _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } return(result); }
public bool Update(T entity, bool omitExceptions) { bool result = false; List <T> locEntities = new List <T>(); try { var validate = entity.GetValidationStatus(); if (!validate.IsValid) { throw new DbEntityValidationException("Validation error entity", validate.EfErrors.ToList()); } var locUpdate = Entities.Where(e => e.Id == entity.Id).SingleOrDefault(); if (locUpdate == null) { throw new DbUpdateException("Entity not exist.", new Exception()); } foreach (var item in Entities) { if (entity.Id == item.Id) { locEntities.Add(entity); } else { locEntities.Add(item); } } Entities = locEntities.AsEnumerable(); result = true; } catch (DbEntityValidationException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = entity.Id }; _status.SetErrors(ex?.EntityValidationErrors); } catch (DbUpdateException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = entity.Id }; _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } catch (Exception ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = entity.Id }; _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } return(result); }
public Tuple <bool, List <T> > UpdateRange(List <T> items, bool omitExceptions) { Tuple <bool, List <T> > result = new Tuple <bool, List <T> >(false, items); List <T> locEntities = new List <T>(); try { foreach (var entity in items) { var validate = entity.GetValidationStatus(); if (!validate.IsValid) { throw new DbEntityValidationException("Validation error entity", validate.EfErrors.ToList()); } var locUpdate = Entities.Where(e => e.Id == entity.Id).SingleOrDefault(); if (locUpdate == null) { throw new DbUpdateException("Entity not exist.", new Exception()); } } foreach (var item in Entities) { var locItem = items.Where(e => e.Id == item.Id).SingleOrDefault(); if (locItem != null) { locEntities.Add(locItem); } else { locEntities.Add(item); } } Entities = locEntities.AsEnumerable(); result = new Tuple <bool, List <T> >(true, locEntities); } catch (DbEntityValidationException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus(); _status.SetErrors(ex?.EntityValidationErrors); } catch (DbUpdateException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus(); _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } catch (Exception ex) { if (!omitExceptions) { throw; } _status = new EntityStatus(); _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } return(result); }
public Tuple <bool, List <T> > AddRange(List <T> items, bool omitExceptions) { Tuple <bool, List <T> > result = new Tuple <bool, List <T> >(false, items); List <T> data = new List <T>(); try { foreach (var entity in items) { var validate = entity.GetValidationStatus(); if (!validate.IsValid) { throw new DbEntityValidationException("Validation error entity", validate.EfErrors.ToList()); } var locInsert = Entities.Where(e => e.Id == entity.Id).SingleOrDefault(); if (locInsert != null) { throw new DbUpdateException("Entity exist.", new Exception()); } entity.Id = Entities.Count() + 1; Entities = Entities.Concat(new[] { entity }); data.Add(entity); } result = new Tuple <bool, List <T> >(true, data); } catch (DbEntityValidationException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus(); _status.SetErrors(ex?.EntityValidationErrors); } catch (DbUpdateException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus(); _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } catch (Exception ex) { if (!omitExceptions) { throw; } _status = new EntityStatus(); _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } return(result); }
public Tuple <bool, T> Add(T entity, bool omitExceptions) { Tuple <bool, T> result = new Tuple <bool, T>(false, entity); try { var validate = entity.GetValidationStatus(); if (!validate.IsValid) { throw new DbEntityValidationException("Validation error entity", validate.EfErrors.ToList()); } var locInsert = Entities.Where(x => x.Id == entity.Id).SingleOrDefault(); if (locInsert != null) { throw new DbUpdateException("Entity exist.", new Exception()); } entity.Id = Entities.Count() + 1; Entities = Entities.Concat(new[] { entity }); result = new Tuple <bool, T>(true, entity); } catch (DbEntityValidationException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = entity.Id }; _status.SetErrors(ex?.EntityValidationErrors); } catch (DbUpdateException ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = entity.Id }; _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } catch (Exception ex) { if (!omitExceptions) { throw; } _status = new EntityStatus { Id = entity.Id }; _status.SetErrors(new List <ValidationResult> { new ValidationResult(ex.Message) }); } return(result); }