public override IList <DatabaseColumn> Columns(string tableName) { var dt = _schemaReader.Columns(tableName); var columnConverter = new ColumnConverter(dt); var cols = columnConverter.Columns().ToList(); return(cols); }
private string AddColumns(string schemaOwner, string tableName, DatabaseTable table, DataSet ds) { table.Columns.Clear(); var columnConverter = new ColumnConverter(ds.Tables[_schemaReader.ColumnsCollectionName]); var databaseColumns = columnConverter.Columns(tableName, schemaOwner).ToList(); if (!databaseColumns.Any()) { //need to define the schema databaseColumns = columnConverter.Columns().ToList(); var first = databaseColumns.FirstOrDefault(); if (first != null) { //take the schema of the first we find table.SchemaOwner = schemaOwner = first.SchemaOwner; } databaseColumns = columnConverter.Columns(tableName, schemaOwner).ToList(); } table.Columns.AddRange(databaseColumns); return schemaOwner; }
private string AddColumns(string schemaOwner, string tableName, DatabaseTable table, DataSet ds) { table.Columns.Clear(); var columnConverter = new ColumnConverter(ds.Tables[_schemaReader.ColumnsCollectionName]); var databaseColumns = columnConverter.Columns(tableName, schemaOwner).ToList(); if (!databaseColumns.Any()) { //need to define the schema databaseColumns = columnConverter.Columns().ToList(); var first = databaseColumns.FirstOrDefault(); if (first != null) { //take the schema of the first we find table.SchemaOwner = schemaOwner = first.SchemaOwner; } databaseColumns = columnConverter.Columns(tableName, schemaOwner).ToList(); } table.Columns.AddRange(databaseColumns); return(schemaOwner); }
public IEnumerable <DatabaseColumn> Load(string tableName) { if (string.IsNullOrEmpty(tableName)) { throw new ArgumentNullException("tableName", "must have tableName"); } if (_noColumns) { //have to get columns for specific table var cols = _sr.Columns(tableName); _columnConverter = new ColumnConverter(cols); } return(_columnConverter.Columns(tableName)); }
/// <summary> /// Gets all query columns from a command (assign any parameters if required) /// </summary> public IList <DatabaseColumn> GetQueryColumns(DbCommand command, IList <DataType> types) { if (command == null) { throw new ArgumentNullException(nameof(command)); } using (var rdr = command.ExecuteReader(System.Data.CommandBehavior.KeyInfo)) { using (var colTable = rdr.GetSchemaTable()) { var columnConverter = new ColumnConverter(colTable); var cols = columnConverter.Columns().ToList(); // It is necessade to create a new list of DataType using connection.GetSchema(DbMetaDataCollectionNames.DataTypes) // because the ProviderDbType in the list returned by DataTypes() is sometimes wrong. //var readerAdapter = new DbProviderReaderAdapter(schemaParameters); DatabaseSchemaFixer.UpdateDataTypes(types, cols); return(cols); } } }
/// <summary> /// Gets the table. If <see cref="Owner"/> is specified, it is used. /// </summary> /// <param name="tableName">Name of the table. Oracle names can be case sensitive.</param> public DatabaseTable Table(string tableName) { if (string.IsNullOrEmpty(tableName)) { throw new ArgumentNullException("tableName"); } DatabaseTable table; using (DataSet ds = _sr.Table(tableName)) { if (ds == null) { return(null); } if (ds.Tables.Count == 0) { return(null); } table = DatabaseSchema.FindTableByName(tableName); if (table == null) { table = new DatabaseTable(); DatabaseSchema.Tables.Add(table); } table.Name = tableName; table.SchemaOwner = _sr.Owner; //columns must be done first as it is updated by the others table.Columns.Clear(); var columnConverter = new ColumnConverter(ds.Tables[_sr.ColumnsCollectionName]); table.Columns.AddRange(columnConverter.Columns()); if (ds.Tables.Contains(_sr.PrimaryKeysCollectionName)) { var converter = new SchemaConstraintConverter(ds.Tables[_sr.PrimaryKeysCollectionName], ConstraintType.PrimaryKey); var pkConstraints = converter.Constraints(); PrimaryKeyLogic.AddPrimaryKey(table, pkConstraints); } if (ds.Tables.Contains(_sr.ForeignKeysCollectionName)) { var converter = new SchemaConstraintConverter(ds.Tables[_sr.ForeignKeysCollectionName], ConstraintType.ForeignKey); table.AddConstraints(converter.Constraints()); } if (ds.Tables.Contains(_sr.ForeignKeyColumnsCollectionName)) { var fkConverter = new ForeignKeyColumnConverter(ds.Tables[_sr.ForeignKeyColumnsCollectionName]); fkConverter.AddForeignKeyColumns(table.ForeignKeys); } if (ds.Tables.Contains(_sr.UniqueKeysCollectionName)) { var converter = new SchemaConstraintConverter(ds.Tables[_sr.UniqueKeysCollectionName], ConstraintType.UniqueKey); table.AddConstraints(converter.Constraints()); } var indexConverter = new IndexConverter(ds.Tables[_sr.IndexColumnsCollectionName], null); table.Indexes.AddRange(indexConverter.Indexes(tableName)); if (ds.Tables.Contains(_sr.IdentityColumnsCollectionName)) { SchemaConstraintConverter.AddIdentity(ds.Tables[_sr.IdentityColumnsCollectionName], table); } } if (DatabaseSchema.DataTypes.Count > 0) { DatabaseSchemaFixer.UpdateDataTypes(DatabaseSchema); } _sr.PostProcessing(DatabaseSchema); return(table); }