public override void Validate(ValidateErrorList error) { base.Validate(error); if (Name != null && Name.Length > 128) error.AddError("Имя таблицы", "Имя таблицы длинее 128 символов."); if (TableRoles.Count == 0) error.AddError("Роли", "Не указана ни одна роль таблицы."); foreach (var helperTable in App.Schema.HelperTables) { if (Name != null && Name.Equals(helperTable.Name, StringComparison.OrdinalIgnoreCase)) error.AddError("Имя таблицы", "Таблица не может называться " + Name.AsSQL() + ", есть такая системная таблица."); } if (Name != null && Name.StartsWith(logPrefix, StringComparison.OrdinalIgnoreCase)) error.AddError("Имя таблицы", "Имя таблицы не может начинаться с '" + logPrefix + "'"); // уникальность имен колонок var uniqueList = new HashSet<string>(); foreach (var tableCol in Columns) { if (uniqueList.Contains(tableCol.Name)) error.AddError("Таблица", "Есть несколько колонок с именем " + tableCol.Name.AsSQL()); else uniqueList.Add(tableCol.Name); } // валидация колонок foreach (var tableCol in Columns) tableCol.Validate(error); // валидация деталей foreach (var tableDetail in Details) tableDetail.Validate(error); // валидация привязнных печатных форм foreach (var linkedReport in LinkedReports) linkedReport.Validate(error); foreach (var tableRoleID in TableRoles) { if (!SchemaBaseRole.Roles.ContainsKey(tableRoleID)) { error.AddError(Name, "У таблицы указана неверная роль: " + tableRoleID.AsSQL()); } else { var role = SchemaBaseRole.Roles[tableRoleID]; if (role is Таблица_TableRole) { var tableRole = role as Таблица_TableRole; // проверка наличия обязательных ролевых полей foreach (var roleCol in tableRole.Columns.Where(col => col.IsRequiredColumn)) { foreach (var tableCol in Columns) { if (tableCol.ColumnRoles.Contains(roleCol.ID)) goto m1; } error.AddError(Name, "Отсутствует обязательная колонка с ролью: " + roleCol.Name.AsSQL()); m1:; } // проверка наличия обязательных ролевых полей foreach (var roleCol in tableRole.Columns.Where(col => !col.IsMultiColumn)) { int count = 0; foreach (var tableCol in Columns) { if (tableCol.ColumnRoles.Contains(roleCol.ID)) count++; } if (count > 1) error.AddError(Name, "Есть несколько колонок с уникальной ролью: " + roleCol.Name.AsSQL()); } } else { error.AddError(Name, "У таблицы указана неверная роль: " + role.Name.AsSQL()); } } } }
public virtual void Validate_Roles(ValidateErrorList error) { if (ColumnRoles.Count == 0 && !(this is SchemaTableSystemColumn)) error.AddError(Name, "У колонки нет ролей."); }
public virtual void Validate(ValidateErrorList errors) { if (Column == null) errors.AddError(Name,"У типа данных не заполнено поле 'Column'."); }
public virtual void Validate_Name(ValidateErrorList error) { if (string.IsNullOrWhiteSpace(Name)) error.AddError(Name,"Имя колонки не может быть пустым"); if (Name != null && Name.Length > 128) error.AddError(Name, "Имя колонки длинее 128 символов"); if (!Table.Columns.Contains(this) && Table.GetColumnByName(Name) != null) // колонка в процессе добавления error.AddError(Name, "уже есть колонка с таким именем"); }
public virtual void Validate(ValidateErrorList error) { Validate_Name(error); Validate_Roles(error); //if (string.IsNullOrWhiteSpace(Name)) // error.AppendLine("У колонки не заполнено поле 'Имя'."); //if (Name != null && Name.Length > 128) // error.AppendLine("Имя колонки длинее 128 символов: " + Name.Substring(0, 50).AsSQL()); if (DataType == null) error.AddError(Name, "У колонки не заполнено поле 'Тип данных'."); if (Table == null) error.AddError(Name, "У колонки не заполнено поле 'Таблица'."); //if (ColumnRoles.Count == 0 && !(this is SchemaTableSystemColumn)) // error.AppendLine("У колонки " + Name.AsSQL() + " нет ролей."); if (DataType != null) DataType.Validate(error); }
public virtual void Validate(ValidateErrorList error) { if (string.IsNullOrWhiteSpace(Name)) { error.AddError(Name, "У детали не заполнено поле 'Имя'."); Name = ""; } if (DetailTableID == null) error.AddError(Name, "У детали не заполнена соответствующая таблица."); if (DetailQueryID == null) error.AddError(Name, "У детали не заполнен запрос для отображения."); if (Opers.Count > 0 && DetailTableID != null) { if (GetDetailTable(true).GetColumnByRole(RoleConst.ВложеннаяТаблица_БизнесОперация)==null) error.AddError(GetDetailTable().Name, "У деталь-таблицы должна быть колонка с ролью 'ВложеннаяТаблица.БизнесОперация'."); } }
public virtual void Validate(ValidateErrorList error) { if (ID == Guid.Empty) error.AddError(Name, "Пустое поле 'ID'."); if (string.IsNullOrWhiteSpace(Name)) error.AddError(Name, "Не заполнено поле 'Имя'."); }
public override void Validate(ValidateErrorList error) { base.Validate(error); if (RefTableID == null) error.AddError((Column.Name == null ? "?" : Column.Name),"У колонки не заполнена ссылка на таблицу - внешний ключ."); else { if (!SchemaBaseRole.Roles.ContainsKey((Guid)RefTableID)) { var table = App.Schema.GetObject<SchemaTable>((Guid)RefTableID); if (table == null) error.AddError((Column.Name == null ? "?" : Column.Name), "У колонки неверная ссылка на таблицу - внешний ключ."); } } }