Пример #1
0
        /// <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;
            }
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }