/// <summary> /// Создает значение по умолчанию /// </summary> /// <param name="dbField"></param> /// <param name="attr"></param> /// <param name="e"></param> /// <returns></returns> public static DefaultValue Create(Field dbField, string attr, XElement e){ var result = new DefaultValue(); result.DefaultValueType = DbDefaultValueType.Native; if (string.IsNullOrWhiteSpace(attr)){ if (dbField.DataType.IsString){ result.Value = ""; }else if (dbField.DataType.IsDateTime){ result.Value = "('19000101')"; }else if (dbField.DataType.IsBool){ result.Value = false; } else{ result.Value = 0; } result.IsDefault = true; } else{ if (attr.Contains("'") || attr.Contains("(")){ result.Value = attr; result.DefaultValueType = DbDefaultValueType.Expression; } else{ if (dbField.DataType.IsString){ result.Value = attr; } else if (dbField.DataType.IsDateTime){ try{ attr.ToDate(); result.DefaultValueType = DbDefaultValueType.Native; result.Value = attr; } catch{ result.DefaultValueType = DbDefaultValueType.Expression; result.Value = attr; } } else { try { result.Value = attr.ToDecimal(); } catch { result.DefaultValueType = DbDefaultValueType.Expression; result.Value = attr; } } } result.IsDefault = false; } return result; }
private void ProcessInvalidFieldReferenceError(Field reference){ var error = new BSharpError{ Class = reference.Table.TargetClass, Level = ErrorLevel.Error, Xml = reference.Definition, Message = "Не могу найти в модели целевого поля таблицы для поля " + reference.Name + " объекта " + reference.Table.FullCodeName + " с ссылкой на " + reference.ReferenceTable + " (" + reference.ReferenceField + ")" }; Errors.Add(error); Context.RegisterError(error); }