예제 #1
0
        public IEfStatus SaveChangesWithValidation(string userName)
        {
            var result = new EfStatus();

            try
            {
                result.ResultRecordsCount = SaveChanges(userName); //then update it
            }
            catch (DbEntityValidationException ex)
            {
                //logger.Error(ex.Message, this, ex);
                return(result.SetErrors(ex.EntityValidationErrors));
            }
            catch (DbUpdateException ex)
            {
                //logger.Error(ex.Message, this, ex);
                var sqlException = ex.InnerException.InnerException as System.Data.SqlClient.SqlException;

                if ((sqlException != null) && (sqlException.Number == 2601 || sqlException.Number == 2627))
                {
                    return(result.SetErrors(new List <ValidationResult> {
                        new ValidationResult("Unic Constraint Violation")
                    }));
                }
                else
                {
                    return(result.SetErrors(new List <ValidationResult> {
                        new ValidationResult("Saving data error")
                    }));
                }
            }
            //else it isn't an exception we understand so it throws in the normal way

            return(result);
        }
예제 #2
0
        public EfStatus SaveChangesWithValidation()
        {
            var status = new EfStatus();

            try
            {
                SaveChanges(); //then update it
            }
            catch (DbEntityValidationException ex)
            {
                return(status.SetErrors(ex.EntityValidationErrors));
            }
            return(status);
        }
예제 #3
0
        public async Task <EfStatus> SaveChangesWithValidationAsync(CancellationToken cancellationToken)
        {
            var status = new EfStatus();

            try
            {
                await SaveChangesAsync(cancellationToken);
            }
            catch (DbEntityValidationException ex)
            {
                return(status.SetErrors(ex.EntityValidationErrors));
            }
            catch (DbUpdateException ex)
            {
                var decodedErrors = TryDecodeDbUpdateException(ex);
                if (decodedErrors == null)
                {
                    throw;  //падаем, если что-то неизвестное
                }
                return(status.SetErrors(decodedErrors));
            }

            return(status);
        }