示例#1
0
 private static String BuildErrorMessage(DataMapValidation validation)
 {
     return "Datamap is invalid. One or more errors have been detected with the current datamap schema (see details below). " + Environment.NewLine +
         validation.BuildValidationErrorMessage(true);
 }
        internal void Validate(DataMapValidation validation)
        {
            validation.PropertyMapList.AddRange(this.CreateDataMapValidationPropertyList());

            validation.IsCurrentValid =
                ((this.Options.ValidateKeys == false) || (this.DataMap.HasKeyDefined())) &&
                this.AllSourcePropertiesMapped() &&
                validation.PropertyMapList.IsValid();

            validation.Description = String.Format(
                "'{0}'->'{1}' ({2})",
                this.DataMap.SourceType.FullName,
                this.DataMap.TargetType.FullName,
                validation.IsCurrentValid ? "Valid" : "Invalid");

            if (validation.IsCurrentValid == false)
            {
                if ((this.Options.ValidateKeys) && (this.DataMap.HasKeyDefined() == false))
                    validation.InvalidReason += "{No keys defined}";
                if (this.AllSourcePropertiesMapped() == false)
                    validation.InvalidReason += "{All source properties not mapped}";
                if (validation.PropertyMapList.IsValid() == false)
                    validation.InvalidReason += "{One or more validation properties invalid}";

                validation.InvalidReason = validation.InvalidReason.Trim();
            }

            //recurse into the kids
            foreach (var childMap in this.DataMap.DataMapCollectionList)
            {
                //get a child mapper
                var childMapper = this._dataMapBuilderCore.GetChildMapper(childMap.ItemDataMap.SourceType, childMap.ItemDataMap.TargetType);
                childMapper.ValidationOptions = this.Options;
                var childBuilder = new DataMapValidationBuilder(childMapper);
                var newValidation = new DataMapValidation();

                newValidation.Parent = validation;
                validation.Children.Add(newValidation);

                childBuilder.Validate(newValidation);
            }
        }
示例#3
0
 public DataBuilderException(DataMapValidation validation)
     : base(BuildErrorMessage(validation))
 {
     this.Validation = validation;
     this.ValidationSummary = validation.BuildValidationErrorMessage();
 }
        public DataMapValidation Build()
        {
            DataMapValidation validation = new DataMapValidation()
            {
                Parent = null
            };

            this.Validate(validation);

            return validation;
        }