public ObjectData GetObjectDataFromTable(string tableName) { var result = new ObjectData(tableName); string cmdText = "select t.COLUMN_NAME, t.DATA_TYPE, cons.CONSTRAINT_TYPE " + "from USER_TAB_COLUMNS t " + "left join all_cons_columns cols " + "on t.TABLE_NAME = cols.TABLE_NAME " + "and t.COLUMN_NAME = cols.COLUMN_NAME " + "left join all_constraints cons " + "on cols.CONSTRAINT_NAME = cons.CONSTRAINT_NAME " + "where t.table_name = :tableName " + "and (cons.constraint_type is null or cons.constraint_type = 'P')"; try { var cmd = DbConnection.CreateCommand(); cmd.CommandText = cmdText; cmd.CommandType = CommandType.Text; cmd.AddParameter(DbType.String, "tableName", tableName); var reader = cmd.ExecuteReader(); while (reader.Read()) { string columnName = reader.GetString(0); string dataType = reader.GetString(1); result.AddParam(columnName, TypeAssoc[dataType]); if (!reader.IsDBNull(2)) { string constraint = reader.GetString(2); if (constraint == "P") { result.PrimaryKeyName = columnName; } } } if (result.Count == 0) { throw new TableMetadataRetrievalException(null, tableName); } } catch (Exception ex) { throw new TableMetadataRetrievalException(ex, tableName); } return(result); }