/// <summary> /// Post-parse validations /// </summary> /// <param name="vd"></param> public void Validate() { //TODO: walk through collection to make sure that cross relations are correct. foreach (DatabaseElement database in databases) { foreach (SqlEntityElement sqlentity in database.SqlEntities) { if (sqlentity.GetPrimaryKeyColumns().Count == 0 && (sqlentity.GenerateDeleteStoredProcScript || sqlentity.GenerateUpdateStoredProcScript || sqlentity.GenerateInsertStoredProcScript)) { this.AddValidationMessage(ParserValidationMessage.NewWarning("SqlEntity " + sqlentity.Name + " does not have any primary key columns defined.")); } if (!sqlentity.HasUpdatableColumns() && sqlentity.GenerateUpdateStoredProcScript) { this.AddValidationMessage(ParserValidationMessage.NewWarning("SqlEntity " + sqlentity.Name + " does not have any editable columns and does not have generateupdatestoredprocscript=\"false\" specified.")); } } } // make sure that all columns are represented in entities foreach (EntityElement entity in entities) { if (entity.SqlEntity.Name.Length > 0) { foreach (ColumnElement column in entity.SqlEntity.Columns) { if (entity.FindFieldByColumnName(column.Name) == null) { this.AddValidationMessage(ParserValidationMessage.NewWarning("could not find field representing column " + column.Name + " in entity " + entity.Name + ".")); } } } } }
/// <summary> /// handle XML validation errors /// </summary> /// <param name="sender"></param> /// <param name="args"></param> internal void SchemaValidationEventHandler(object sender, ValidationEventArgs args) { if (args.Severity.Equals(XmlSeverityType.Error)) { IsValid = false; WriteToLog(ParserValidationMessage.NewError(args.Message).ToString()); } else { WriteToLog(ParserValidationMessage.NewWarning(args.Message).ToString()); } }