public override IList <DatabaseColumn> Columns(string tableName)
        {
            var dt = _schemaReader.Columns(tableName);
            var columnConverter = new ColumnConverter(dt);
            var cols            = columnConverter.Columns().ToList();

            return(cols);
        }
예제 #2
0
 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;
 }
예제 #3
0
        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);
        }
예제 #4
0
        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));
        }
예제 #5
0
        /// <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);
                }
            }
        }
예제 #6
0
        /// <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);
        }