public DatabaseTable Load(string tableName, CancellationToken ct) { if (ct.IsCancellationRequested) { return(new DatabaseTable()); } ReaderEventArgs.RaiseEvent(ReaderProgress, this, ProgressType.ReadingSchema, SchemaObjectType.Tables, tableName, null, null); var schemaOwner = _schemaReader.Owner; DatabaseTable table; using (var ds = _schemaReader.Table(tableName)) { if (ds == null) { return(null); } if (ds.Tables.Count == 0) { return(null); } ReaderEventArgs.RaiseEvent(ReaderProgress, this, ProgressType.Processing, SchemaObjectType.Tables, tableName, null, null); table = _databaseSchema.FindTableByName(tableName, schemaOwner); if (table == null) { table = new DatabaseTable(); _databaseSchema.Tables.Add(table); } table.Name = tableName; table.SchemaOwner = schemaOwner; //columns must be done first as it is updated by the others schemaOwner = AddColumns(schemaOwner, tableName, table, ds); AddConstraints(ds, table); AddOthers(schemaOwner, tableName, table, ds); _schemaReader.PostProcessing(table); } return(table); }