/// <summary>
        /// Validate the query parameters if there are any.
        /// </summary>
        /// <param name="validationEvent"></param>
        /// <returns></returns>
        public override bool Validate(ValidationEvent validationEvent)
        {
            object             target  = validationEvent.Target;
            IValidationResults results = validationEvent.Results;

            bool valid = ValidateInternal(validationEvent);

            if (!valid)
            {
                return(valid);
            }

            // Has paremeters?
            NamedQuery query = (NamedQuery)target;

            if (string.IsNullOrEmpty(query.Parameters))
            {
                return(true);
            }

            IList <NamedQueryParam>   queryParams = NamedQueryParamsParser.ParseParams(query.Parameters);
            NamedQueryParamsValidator validator   = new NamedQueryParamsValidator(queryParams);
            bool isValid = validator.Validate(results).IsValid;

            return(isValid);
        }
        /// <summary>
        /// Validation method for the entity.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <param name="useTarget">if set to <c>true</c> [use target].</param>
        /// <param name="results">The results.</param>
        /// <returns></returns>
        protected override bool ValidateInternal(ValidationEvent validationEvent)
        {
            object             target  = validationEvent.Target;
            IValidationResults results = validationEvent.Results;

            int        initialErrorCount = results.Count;
            NamedQuery entity            = (NamedQuery)target;

            Validation.IsStringLengthMatch(entity.Name, false, true, true, 1, 100, results, "Name");
            Validation.IsStringLengthMatch(entity.Description, true, false, true, -1, 200, results, "Description");
            Validation.IsStringLengthMatch(entity.Sql, false, true, true, 1, 500, results, "Sql");
            Validation.IsStringLengthMatch(entity.Parameters, true, false, true, -1, 250, results, "Parameters");
            Validation.IsNumericWithinRange(entity.OrderId, false, false, -1, -1, results, "OrderId");
            Validation.IsStringLengthMatch(entity.ItemType, true, false, true, -1, 50, results, "ItemType");
            Validation.IsStringLengthMatch(entity.Roles, true, false, true, -1, 50, results, "Roles");

            return(initialErrorCount == results.Count);
        }