public override void LoadObjects(MetadataList objects, MetadataLoadingOptions loadingOptions)
        {
            MetadataItem obj = objects.Parent;

            if (obj.Schema == null && obj.Database == null && obj.Server == null)
            {
                if (!Connected)
                {
                    Connect();
                }

                try
                {
                    // load tables
                    DataTable schemaTable = _connection.GetSchema(VistaDBConnection.SchemaConstants.SCHEMA_TABLES);

                    MetadataObjectFetcherFromDatatable mof = new MetadataObjectFetcherFromDatatable(objects, loadingOptions);
                    mof.NameFieldName   = "TABLE_NAME";
                    mof.TypeFieldName   = "TABLE_TYPE";
                    mof.TableType       = new string[] { VistaDBConnection.UserTableType };
                    mof.SystemTableType = new string[] { VistaDBConnection.SystemTableType };
                    mof.Datatable       = schemaTable;

                    mof.LoadMetadata();

                    // load views
                    schemaTable = _connection.GetSchema(VistaDBConnection.SchemaConstants.SCHEMA_VIEWS, null);

                    mof = new MetadataObjectFetcherFromDatatable(objects, loadingOptions);
                    mof.NameFieldName     = "TABLE_NAME";
                    mof.Datatable         = schemaTable;
                    mof.DefaultObjectType = MetadataType.View;

                    mof.LoadMetadata();
                }
                catch (Exception exception)
                {
                    throw new QueryBuilderException(exception.Message, exception);
                }
            }
        }