예제 #1
0
        private IEnumerable <Message> Translate([NotNull] ExceptionContext context, [NotNull] DbConstraintException exc)
        {
            string[] parameters =
                new List <string>
            {
                exc.ConstraintName ?? "UNKNOWN_CONSTRAINT_NAME",
                exc.EntityName ?? "UNKNOWN_ENTITY_NAME",
                exc.EntityId?.ToString() ?? "UNKNOWN_ENTITY_ID",
                exc.Message ?? "UNKNOWN_MESSAGE"
            }
            .ToArray();

            switch (exc.ConstraintType)
            {
            case DbConstraintTypeEnum.PRIMARY_KEY:
                yield return(BuildMessage("DB_PK_CONSTRAINT_VIOLATION", parameters));

                break;

            case DbConstraintTypeEnum.FOREIGN_KEY:
                yield return(BuildMessage("DB_FK_CONSTRAINT_VIOLATION", parameters));

                break;

            case DbConstraintTypeEnum.NOT_NULL:
                yield return(BuildMessage("DB_NN_CONSTRAINT_VIOLATION", parameters));

                break;

            case DbConstraintTypeEnum.UNIQUE:
                yield return(BuildMessage("DB_UQ_CONSTRAINT_VIOLATION", parameters));

                break;

            case DbConstraintTypeEnum.CHECK:
                yield return(BuildMessage("DB_CK_CONSTRAINT_VIOLATION", parameters));

                break;

            default:
                yield return(BuildMessage("DB_GENERIC_CONSTRAINT_VIOLATION", parameters));

                break;
            }
        }
예제 #2
0
 protected virtual HttpStatusCode DetermineHttpStatusCode([NotNull] DbConstraintException ce)
 => HttpStatusCode.BadRequest;