public Database LoadDatabase(List<SchemaData> databaseObjectsToFetch, List<string> allowedSchemas)
        {
            try
            {
                connector.Open();
            }
            catch (Exception e)
            {
                throw new DatabaseLoaderException("Error opening database connection. See inner exception.", e);
            }
            try
            {
                var db = new Database(connector.DatabaseName, DatabaseTypes.MySQL) { Loader = this };
                db.ConnectionInformation = DatabaseConnector.ConnectionInformation;
                SetSchemaFilter(databaseObjectsToFetch);

                foreach (var table in GetTables(databaseObjectsToFetch))
                    db.AddTable(table);

                foreach (var view in GetViews(databaseObjectsToFetch))
                    db.AddView(view);

                GetForeignKeys(db);
                return db;
            }
            catch (Exception e)
            {
                throw new DatabaseLoaderException("Error opening database connection. See inner exception.", e);
            }
            finally
            {
                connector.Close();
            }
        }