private void RetrieveColumns(IDbConnection connection, TableDefinition table)
        {
            using (IDbCommand cmd = connection.CreateCommand())
            {
                cmd.CommandText = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, DATETIME_PRECISION, COLLATION_NAME";
                using (IDataReader reader = cmd.ExecuteReader())
                {
                    ColumnDefinition column = new ColumnDefinition();
                    column.Name = reader["COLUMN_NAME"] as string;

                    table.Columns.Add(column);
                }
            }
        }
        private void RetrieveTables(IDbConnection connection, SchemeDefinition scheme)
        {
            using (IDbCommand cmd = connection.CreateCommand())
            {
                cmd.CommandText = "SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA";
                using (IDataReader reader = cmd.ExecuteReader())
                {
                    TableDefinition table = new TableDefinition();
                    table.Name = reader["TABLE_NAME"] as string;

                    RetrieveColumns(connection, table);

                    scheme.Tables.Add(table);
                }
            }
        }