/// <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; }
/// <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 SetupDefaultValue(IBSharpClass c, XElement e) { DefaultSqlValue = DefaultValue.Create(this, e.Attr("default"), e); DefaultObjectValue = DefaultValue.Create(this, e.Attr("csharp-default"), e); }