示例#1
0
            /// <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));
            }
示例#2
0
        /// <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);
        }