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; } }
protected virtual HttpStatusCode DetermineHttpStatusCode([NotNull] DbConstraintException ce) => HttpStatusCode.BadRequest;