protected override void FillTableColumns(DBSchemaTableColumnCollection atablecolumns, DataTable dtColumns) { DataColumn autoinc = GetColumn(dtColumns, "IsAutoIncrement", true); DataColumn colname = GetColumn(dtColumns, "ColumnName", true); DataColumn ispk = GetColumn(dtColumns, "IsKey", true); DataColumn isRO = GetColumn(dtColumns, "IsReadOnly", true); DataColumn type = GetColumn(dtColumns, "DataType", true); DataColumn allownull = GetColumn(dtColumns, "AllowDBNull", true); DataColumn pos = GetColumn(dtColumns, "ColumnOrdinal", true); DataColumn size = GetColumn(dtColumns, "ColumnSize", true); DataColumn dataType = GetColumn(dtColumns, "DataTypeName", true); DataColumn CharacterSetColumn = GetColumn(dtColumns, "CHARACTERSET", false); foreach (DataRow coldef in dtColumns.Rows) { DBSchemaTableColumn tcol = new DBSchemaTableColumn(); tcol.Name = GetColumnStringValue(coldef, colname); tcol.AutoAssign = GetColumnBoolValue(coldef, autoinc); tcol.HasDefault = false; tcol.Nullable = GetColumnBoolValue(coldef, allownull); tcol.OrdinalPosition = GetColumnIntValue(coldef, pos); tcol.PrimaryKey = GetColumnBoolValue(coldef, ispk); tcol.ReadOnly = GetColumnBoolValue(coldef, isRO); tcol.Size = GetColumnIntValue(coldef, size); tcol.Type = Type.GetType(GetColumnStringValue(coldef, type)); tcol.NativeType = GetColumnStringValue(coldef, dataType); tcol.DbType = this.GetDbTypeForNativeType(tcol.NativeType, GetColumnStringValue(coldef, CharacterSetColumn)); atablecolumns.Add(tcol); } }
protected override void FillTableColumns(DBSchemaTableColumnCollection atablecolumns, DataTable dtColumns) { DataColumn TableNameColumn = GetColumn(dtColumns, "TABLE_NAME", true); DataColumn TableSchemaColumn = GetColumn(dtColumns, "TABLE_SCHEMA", false); DataColumn TableCatalogColumn = GetColumn(dtColumns, "TABLE_CATALOG", false); DataColumn ColumnNameColumn = GetColumn(dtColumns, "COLUMN_NAME", true); DataColumn OrdinalPositionColumn = GetColumn(dtColumns, "ORDINAL_POSITION", true); DataColumn DefaultValueColumn = GetColumn(dtColumns, "COLUMN_DEFAULT", false); DataColumn IsNullableColumn = GetColumn(dtColumns, "IS_NULLABLE", true); DataColumn DataTypeColumn = GetColumn(dtColumns, "EDM_TYPE", true); DataColumn MaxCharacterLengthColumn = GetColumn(dtColumns, "CHARACTER_MAXIMUM_LENGTH", false); DataColumn AutoNumberColumn = GetColumn(dtColumns, "AUTOINCREMENT", false); DataColumn PrimaryKeyColumn = GetColumn(dtColumns, "PRIMARY_KEY", false); DataColumn CharacterSetColumn = GetColumn(dtColumns, "CHARACTER_SET_NAME", false); foreach (DataRow row in dtColumns.Rows) { DBSchemaTableColumn col = new DBSchemaTableColumn(); col.Name = GetColumnStringValue(row, ColumnNameColumn); col.OrdinalPosition = GetColumnIntValue(row, OrdinalPositionColumn); col.DefaultValue = GetColumnStringValue(row, DefaultValueColumn); col.Nullable = GetColumnBoolValue(row, IsNullableColumn); col.NativeType = GetColumnStringValue(row, DataTypeColumn); col.DbType = GetDbTypeForNativeType(col.NativeType, GetColumnStringValue(row, CharacterSetColumn)); col.Type = GetSystemTypeForNativeType(GetColumnStringValue(row, DataTypeColumn)); col.Size = GetColumnIntValue(row, MaxCharacterLengthColumn); col.AutoAssign = GetColumnBoolValue(row, AutoNumberColumn); col.PrimaryKey = GetColumnBoolValue(row, PrimaryKeyColumn); col.ReadOnly = col.AutoAssign; col.HasDefault = !string.IsNullOrEmpty(col.DefaultValue); atablecolumns.Add(col); } }
/// <summary> /// Fills the information in atablecolumns with the data from dtColumns /// </summary> /// <param name="atablecolumns"></param> /// <param name="dtColumns"></param> protected override void FillTableColumns(DBSchemaTableColumnCollection atablecolumns, DataTable dtColumns) { DataColumn TableNameColumn = GetColumn(dtColumns, "TABLE_NAME", true); DataColumn TableSchemaColumn = GetColumn(dtColumns, "TABLE_SCHEMA", false); DataColumn TableCatalogColumn = GetColumn(dtColumns, "TABLE_CATALOG", false); DataColumn ColumnNameColumn = GetColumn(dtColumns, "COLUMN_NAME", true); DataColumn OrdinalPositionColumn = GetColumn(dtColumns, "ORDINAL_POSITION", true); DataColumn DefaultValueColumn = GetColumn(dtColumns, "COLUMN_DEFAULT", false); DataColumn IsNullableColumn = GetColumn(dtColumns, "IS_NULLABLE", true); DataColumn DataTypeColumn = GetColumn(dtColumns, "DATA_TYPE", true); DataColumn MaxCharacterLengthColumn = GetColumn(dtColumns, "CHARACTER_MAXIMUM_LENGTH", false); DataColumn AutoNumberColumn = GetColumn(dtColumns, "AUTOINCREMENT", false); DataColumn PrimaryKeyColumn = GetColumn(dtColumns, "PRIMARY_KEY", false); foreach (DataRow row in dtColumns.Rows) { DBSchemaTableColumn col = new DBSchemaTableColumn(); col.Name = GetColumnStringValue(row, ColumnNameColumn); col.OrdinalPosition = GetColumnIntValue(row, OrdinalPositionColumn); col.DefaultValue = GetColumnStringValue(row, DefaultValueColumn); col.Nullable = GetColumnBoolValue(row, IsNullableColumn); int type = GetColumnIntValue(row, DataTypeColumn, -1); DBMSAccessTypeMapping map; if (type > 0 && this.Types.TryGetType(type, out map)) { col.NativeType = map.TypeName; col.DbType = GetDbTypeForNativeType(map.TypeName, string.Empty); col.Type = map.RuntimeType; if (col.DbType == DbType.Object && null != map.RuntimeType) { col.DbType = DBHelper.GetDBTypeForRuntimeType(map.RuntimeType); } } col.Size = GetColumnIntValue(row, MaxCharacterLengthColumn); col.AutoAssign = GetColumnBoolValue(row, AutoNumberColumn); col.PrimaryKey = GetColumnBoolValue(row, PrimaryKeyColumn); col.ReadOnly = col.AutoAssign; col.HasDefault = !string.IsNullOrEmpty(col.DefaultValue); atablecolumns.Add(col); } }