private static void InitSchemaColumn(SchemaColumn col, SchemaTable schemaTable, string columnName, string schemaColumnName = "", int ordinalSequence = -1, string defaultValue = null, bool isNullable = false, bool isRequired = false) { col.SchemaTable = schemaTable; col.ColumnName = columnName; col.SchemaColumnName = schemaColumnName; col.OrdinalSequence = ordinalSequence; col.DefaultValue = defaultValue; col.IsNullable = isNullable; col.IsRequired = isRequired; }
protected string GetSqlServerCreateTableField(SchemaColumn schemaColumn) { //[Company] [varchar](8) NULL, return string.Format("[{0}] [{1}]{2}{3}", schemaColumn.SchemaColumnName, GetSqlServerColumnDataType(schemaColumn), GetSqlServerColumnSize(schemaColumn), schemaColumn.IsNullable ? " NULL" : string.Empty); }
protected string GetSqlServerColumnSize(SchemaColumn schemaColumn) { switch (schemaColumn.DbType) { case DbType.AnsiString: case DbType.AnsiStringFixedLength: case DbType.String: case DbType.StringFixedLength: var textColumn = schemaColumn as TextSchemaColumn; if (textColumn != null && textColumn.MaxLength <= 100) { return string.Format("({0})", textColumn.MaxLength); } else { return "(max)"; } break; case DbType.Binary: case DbType.Object: return "(max)"; break; case DbType.Currency: case DbType.Decimal: case DbType.VarNumeric: var decimalColumn = schemaColumn as DecimalSchemaColumn; if (decimalColumn != null) { return string.Format("({0},{1})", decimalColumn.Precision, decimalColumn.Scale); } else { return "(28,8)"; } break; case DbType.Byte: case DbType.SByte: case DbType.Boolean: case DbType.Date: case DbType.DateTime: case DbType.DateTimeOffset: case DbType.Double: case DbType.Guid: case DbType.Int16: case DbType.UInt16: case DbType.Int32: case DbType.UInt32: case DbType.Int64: case DbType.UInt64: case DbType.Single: case DbType.Time: case DbType.Xml: case DbType.DateTime2: return string.Empty; break; default: throw new ArgumentOutOfRangeException(); } }
protected string GetSqlServerColumnDataType(SchemaColumn schemaColumn) { switch (schemaColumn.DbType) { case DbType.AnsiString: case DbType.AnsiStringFixedLength: case DbType.String: case DbType.StringFixedLength: return "varchar"; break; case DbType.Binary: case DbType.Object: return "varbinary"; break; case DbType.Byte: case DbType.SByte: return "tinyint"; break; case DbType.Boolean: return "bit"; break; case DbType.Currency: case DbType.Decimal: case DbType.VarNumeric: return "decimal"; break; case DbType.Date: case DbType.DateTime: case DbType.DateTimeOffset: return "date"; break; case DbType.Double: return "real"; break; case DbType.Guid: return "uniqueid"; break; case DbType.Int16: case DbType.UInt16: return "smallint"; break; case DbType.Int32: case DbType.UInt32: return "int"; break; case DbType.Int64: case DbType.UInt64: return "bigint"; break; case DbType.Single: return "float"; break; case DbType.Time: return "Time"; break; case DbType.Xml: return "xml"; break; case DbType.DateTime2: return "DateTime2"; break; default: throw new ArgumentOutOfRangeException(); } }