/// <summary> /// Convertit une erreur de contrainte de clé étrangère en message. /// </summary> /// <param name="initialMessage">Message initial.</param> /// <param name="index">Nom de l'index.</param> /// <returns>Message final.</returns> private static SqlErrorMessage HandleForeignConstraintException(string initialMessage, string index) { SqlServerConstraintViolation violation = initialMessage.Contains("FOREIGN KEY") ? SqlServerConstraintViolation.ForeignKey : SqlServerConstraintViolation.ReferenceKey; string message = SqlServerManager.Instance.GetConstraintMessage(index, violation); if (string.IsNullOrEmpty(message)) { message = SqlServerManager.Instance.GetConstraintMessage("FK_DEFAULT_MESSAGE", violation); } return(new SqlErrorMessage(message, index)); }
/// <summary> /// Retourne le message d'erreur associée à une violation de contrainte. /// </summary> /// <param name="indexName">Nom de l'index.</param> /// <param name="violation">Type de violation.</param> /// <returns>Message d'erreur ou null.</returns> internal string GetConstraintMessage(string indexName, SqlServerConstraintViolation violation) { string resourceName = indexName; if (violation == SqlServerConstraintViolation.ForeignKey) { resourceName += "_missing"; } foreach (ResourceManager manager in _constraintMessagesResources) { try { string constraintMessage = manager.GetString(resourceName); if (!string.IsNullOrEmpty(constraintMessage)) { return(constraintMessage); } } catch (MissingManifestResourceException) { continue; } } ILog log = LogManager.GetLogger("Kinetix.Application"); if (log.IsWarnEnabled) { log.Warn("La ressource " + resourceName + " n'a pas été trouvée, utilisation du message par défault."); } switch (violation) { case SqlServerConstraintViolation.ForeignKey: resourceName = "FK_MISSING_DEFAULT_MESSAGE"; break; case SqlServerConstraintViolation.ReferenceKey: resourceName = "FK_DEFAULT_MESSAGE"; break; case SqlServerConstraintViolation.Unique: resourceName = "UK_DEFAULT_MESSAGE"; break; case SqlServerConstraintViolation.Check: resourceName = "CK_DEFAULT_MESSAGE"; break; default: return(null); } foreach (ResourceManager manager in _constraintMessagesResources) { try { return(manager.GetString(resourceName)); } catch (MissingManifestResourceException) { continue; } } return(null); }