示例#1
0
        public virtual SubmitResult CustomizeException(Exception ex, string failMessage = null)
        {
            var res = new SubmitResult
            {
                Code    = 101,
                Message = failMessage
            };

            res.SetException(ex);

            var sqlException = GetSqlException(ex);

            if (sqlException != null)
            {
                if (sqlException.Number == 547)
                {
                    DeleteResult deleteResult = res.MapToResult <DeleteResult>();
                    deleteResult.Code      = 547;
                    deleteResult.CanDelete = false;
                    deleteResult.TableName = SqlInterpreter.N00547(sqlException.Message)[5].Split('.')[1];
                    return(deleteResult);
                }
            }

            return(res);
        }
示例#2
0
        public virtual DeleteResult CanDelete(object id)
        {
            if (!IdExists(id))
            {
                return new DeleteResult {
                           CanDelete = true, Code = 0
                }
            }
            ;
            using (var txscope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                DeleteResult res = new DeleteResult();

                try
                {
                    DeleteById(id);
                    DbContext.SaveChanges();
                    txscope.Dispose();
                    res.AffectedRows = 0;
                    res.CanDelete    = true;
                    res.Code         = 0;
                    return(res);
                    //txscope.Complete();
                }
                catch (Exception ex)
                {
                    txscope.Dispose();

                    res.AffectedRows     = 0;
                    res.CanDelete        = false;
                    res.Code             = 1;
                    res.ExceptionMessage = ex.Message;
                    int?   number    = ((SqlException)ex.InnerException)?.Number;
                    string tableName = "";
                    if (number == 547)
                    {
                        tableName = SqlInterpreter.N00547(ex.InnerException.Message)[5].Split('.')[1];
                    }
                    res.TableName = tableName;
                    // Log error
                    return(res);
                }
            }
        }