/// <summary> /// Creates a new database column within the table. /// </summary> public DomainTableColumn CreateColumn() { DomainTableColumn column = new DomainTableColumn(this); _tableColumns.Add(column); return(column); }
/// <summary> /// Deserialises the version history from the specified xml element. /// </summary> internal static void Deserialise(DomainTable table, XmlNode parentNode) { foreach (XmlNode xmlNode in parentNode.SelectNodes("column")) { DomainTableColumn result = table.CreateColumn(); result.Deserialise(xmlNode); } }
/// <summary> /// Deserialises the version history from the specified xml element. /// </summary> internal static void Deserialise(Domain domain, XmlNode parentNode) { foreach (XmlNode xmlNode in parentNode.SelectNodes("table")) { DomainTable result = domain.CreateTable(); result.Deserialise(xmlNode); DomainTableColumn.Deserialise(result, xmlNode); DomainTableIndex.Deserialise(result, xmlNode); DomainTableConstraint.Deserialise(result, xmlNode); } }
/// <summary> /// Parses a data record into a <see cref="DatabaseTableColumn" /> instance. /// </summary> private DomainTableColumn ParseColumn(DomainTable table, IDataRecord record) { DomainTableColumn column = table.CreateColumn(); column.ColumnOrdinal = record["column_index"].ConvertTo <Int32>(); column.ColumnName = record["column_name"].ConvertTo <String>(); column.ColumnType = record["column_type"].ConvertTo <DomainDataType>(); column.ColumnLength = record["column_length"].ConvertTo <Int32>(); column.ColumnScale = record["column_scale"].ConvertTo <Int32>(); column.ColumnNullable = record["column_nullable"].ConvertTo <Boolean>(); column.ColumnDefaultValue = record["column_default"].ConvertTo <String>(); return(column); }
protected string GetRecordValueExpression(DomainTableColumn column) { StringBuilder expression = new StringBuilder(); string valueType = column.ProgrammaticType.Replace("?", ""); Type progType = Type.GetType("System." + valueType); if (progType != null && progType.IsSignedNumericOrDate()) { expression.AppendFormat("record.{0} == {1}.MinValue ? ", column.ProgrammaticName, valueType); if (!column.ColumnNullable && !string.IsNullOrEmpty(column.ColumnDefaultValue)) { if (progType.Equals(typeof(Decimal))) { expression.Append(column.ColumnDefaultValue + "M"); // The standard represtation of an number needs an "M" appended to make it a decimal, e.g. 0 === int or double, 0M === decimal } else if (progType.Equals(typeof(DateTime))) { if (column.ColumnDefaultValue.Equals("getdate()", StringComparison.InvariantCultureIgnoreCase)) { expression.Append("DateTime.Now"); } else { expression.Append("new DateTime(1900,1,1)"); } } else { expression.Append(column.ColumnDefaultValue); } } else { expression.Append("( useV6Logic ? "); if (progType.Equals(typeof(System.DateTime))) { if (!string.IsNullOrEmpty(column.ColumnDefaultValue) && column.ColumnDefaultValue.Equals("getdate()", StringComparison.InvariantCultureIgnoreCase)) { expression.Append("new DateTime?(DateTime.Now)"); } else { expression.Append("new DateTime?(new DateTime(1900,1,1))"); } } else { expression.AppendFormat("new {0}?({1}{2})", valueType, column.ColumnDefaultValue ?? "0", progType.Equals(typeof(Decimal)) ? "M" : ""); } expression.Append(" : null )"); } expression.Append(" : record." + column.ProgrammaticName); } if (expression.Length == 0) { expression.Append("record." + column.ProgrammaticName); } return(expression.ToString());; }
public StoredProcFetchAllByColumn(GeneratedProject project, DomainEntity entity, DomainTableColumn column) : base(project) { _entity = entity; _column = column; }
/// <summary> /// Initialises a new <see cref="DomainEntityAttribute" /> instance. /// </summary> public DomainEntityAttribute(DomainEntity entity, DomainTableColumn column) : base(entity.Version) { _entity = entity; _column = column; }