public override void LoadForeignKeys(MetadataList foreignKeys, MetadataLoadingOptions loadingOptions)
        {
            MetadataItem obj = foreignKeys.Parent.Object;

            if (obj.Server == null)
            {
                MetadataItem database = obj.Database;
                try
                {
                    string[] restrictions = new string[5];
                    restrictions[0] = database != null ? database.Name : null;
                    restrictions[2] = obj.Name;
                    DataTable schemaTable = _connection.GetSchema("ForeignKeys", restrictions);
                    MetadataForeignKeysFetcherFromDatatable mrf = new MetadataForeignKeysFetcherFromDatatable(foreignKeys, loadingOptions)
                    {
                        PkDatabaseFieldName = "FKEY_TO_CATALOG",
                        PkNameFieldName     = "FKEY_TO_TABLE",
                        PkFieldName         = "FKEY_TO_COLUMN",
                        FkFieldName         = "FKEY_FROM_COLUMN",
                        OrdinalFieldName    = "FKEY_FROM_ORDINAL_POSITION",
                        Datatable           = schemaTable
                    };
                    mrf.LoadMetadata();
                }
                catch (Exception exception)
                {
                    throw new QueryBuilderException(exception.Message, exception);
                }
            }
        }
        public override void LoadForeignKeys(MetadataList foreignKeys, MetadataLoadingOptions loadingOptions)
        {
            if (!Connected)
            {
                Connect();
            }

            // load FKs
            try
            {
                MetadataItem obj = foreignKeys.Parent.Object;

                string[] restrictions = new string[5];
                restrictions[2] = obj.Name;

                DataTable schemaTable = _connection.GetSchema(VistaDBConnection.SchemaConstants.SCHEMA_FOREIGNKEYCOLUMNS, restrictions);

                MetadataForeignKeysFetcherFromDatatable mrf = new MetadataForeignKeysFetcherFromDatatable(foreignKeys, loadingOptions);
                mrf.PkNameFieldName       = "FKEY_TO_TABLE";
                mrf.PkFieldName           = "FKEY_TO_COLUMN";
                mrf.FkFieldName           = "FKEY_FROM_COLUMN";
                mrf.ForeignKeyIdFieldName = "FKEY_TO_TABLE";
                mrf.Datatable             = schemaTable;

                mrf.LoadMetadata();
            }
            catch (Exception exception)
            {
                throw new QueryBuilderException(exception.Message, exception);
            }
        }
        public override void LoadForeignKeys(MetadataList foreignKeys, MetadataLoadingOptions loadingOptions)
        {
            if (!Connected)
            {
                Connect();
            }

            // load FKs
            try
            {
                MetadataItem obj = foreignKeys.Parent.Object;

                string[] restrictions = new string[3];
                restrictions[2] = obj.Name;

                DataTable schemaTable = _connection.GetSchema("ForeignKeyColumns", restrictions);

                MetadataForeignKeysFetcherFromDatatable mrf = new MetadataForeignKeysFetcherFromDatatable(foreignKeys, loadingOptions);
                mrf.PkNameFieldName  = "REFERENCED_TABLE_NAME";
                mrf.PkFieldName      = "REFERENCED_COLUMN_NAME";
                mrf.FkFieldName      = "COLUMN_NAME";
                mrf.OrdinalFieldName = "ORDINAL_POSITION";
                mrf.TrimSpaces       = true;
                mrf.Datatable        = schemaTable;

                mrf.LoadMetadata();
            }
            catch (Exception exception)
            {
                throw new QueryBuilderException(exception.Message, exception);
            }
        }
        public override void LoadForeignKeys(MetadataList foreignKeys, MetadataLoadingOptions loadingOptions)
        {
            if (!Connected)
            {
                Connect();
            }

            // load FKs
            try
            {
                MetadataItem obj      = foreignKeys.Parent.Object;
                MetadataItem database = obj.Database;

                string[] restrictions = new string[2];
                restrictions[0] = database != null ? database.Name : string.Empty;
                restrictions[1] = obj.Name;

                DataTable schemaTable = _connection.GetSchema("Foreign Key Columns", restrictions);

                MetadataForeignKeysFetcherFromDatatable mrf = new MetadataForeignKeysFetcherFromDatatable(foreignKeys, loadingOptions);

                if (foreignKeys.SQLContext.SyntaxProvider.IsSupportSchemas())
                {
                    mrf.PkSchemaFieldName = "TABLE_SCHEMA";
                }
                else
                {
                    mrf.PkDatabaseFieldName = "TABLE_SCHEMA";
                }

                mrf.PkNameFieldName  = "TABLE_NAME";
                mrf.PkFieldName      = "COLUMN_NAME";
                mrf.FkFieldName      = "REFERENCED_COLUMN_NAME";
                mrf.OrdinalFieldName = "ORDINAL_POSITION";
                mrf.Datatable        = schemaTable;

                mrf.LoadMetadata();
            }
            catch (Exception exception)
            {
                throw new QueryBuilderException(exception.Message, exception);
            }
        }
        public override void LoadForeignKeys(MetadataList foreignKeys, MetadataLoadingOptions loadingOptions)
        {
            if (!Connected)
            {
                Connect();
            }

            MetadataItem obj = foreignKeys.Parent.Object;

            if (obj.Server == null)
            {
                MetadataItem schema   = obj.Schema;
                MetadataItem database = obj.Database;

                try
                {
                    object[] restrictions = new object[6];
                    restrictions[3] = database != null ? database.Name : null;
                    restrictions[4] = schema != null ? schema.Name : null;
                    restrictions[5] = obj.Name;

                    DataTable schemaTable = _connection.GetOleDbSchemaTable(OleDbSchemaGuid.Foreign_Keys, restrictions);

                    MetadataForeignKeysFetcherFromDatatable mrf = new MetadataForeignKeysFetcherFromDatatable(foreignKeys,
                                                                                                              loadingOptions);

                    mrf.PkDatabaseFieldName = "PK_TABLE_CATALOG";
                    mrf.PkSchemaFieldName   = "PK_TABLE_SCHEMA";
                    mrf.PkNameFieldName     = "PK_TABLE_NAME";
                    mrf.PkFieldName         = "PK_COLUMN_NAME";
                    mrf.FkFieldName         = "FK_COLUMN_NAME";
                    mrf.OrdinalFieldName    = "ORDINAL";
                    mrf.Datatable           = schemaTable;

                    mrf.LoadMetadata();
                }
                catch (Exception exception)
                {
                    throw new QueryBuilderException(exception.Message, exception);
                }
            }
        }
        public override void LoadForeignKeys(MetadataList foreignKeys, MetadataLoadingOptions loadingOptions)
        {
            MetadataItem obj = foreignKeys.Parent.Object;

            if (obj.Server == null)
            {
                MetadataItem schema   = obj.Schema;
                MetadataItem database = obj.Database;

                try
                {
                    string[] restrictions = new string[6];
                    restrictions[3] = database != null ? database.Name : null;
                    restrictions[4] = schema != null ? schema.Name : null;
                    restrictions[5] = obj.Name;

                    DataTable schemaTable = _connection.GetSchema("ForeignKeys", restrictions);

                    if (schemaTable.Columns.Contains("PKTABLE_NAME") && schemaTable.Columns.Contains("PKCOLUMN_NAME") && schemaTable.Columns.Contains("FKCOLUMN_NAME"))
                    {
                        MetadataForeignKeysFetcherFromDatatable mrf = new MetadataForeignKeysFetcherFromDatatable(foreignKeys, loadingOptions);

                        mrf.PkDatabaseFieldName = "PKTABLE_CAT";
                        mrf.PkSchemaFieldName   = "PKTABLE_SCHEM";
                        mrf.PkNameFieldName     = "PKTABLE_NAME";
                        mrf.PkFieldName         = "PKCOLUMN_NAME";
                        mrf.FkFieldName         = "FKCOLUMN_NAME";
                        mrf.OrdinalFieldName    = "KEY_SEQ";
                        mrf.Datatable           = schemaTable;

                        mrf.LoadMetadata();
                    }
                }
                catch (Exception exception)
                {
                    throw new QueryBuilderException(exception.Message, exception);
                }
            }
        }
        public override void LoadForeignKeys(MetadataList foreignKeys, MetadataLoadingOptions loadingOptions)
        {
            if (!Connected)
            {
                Connect();
            }

            MetadataItem obj      = foreignKeys.Parent.Object;
            MetadataItem schema   = obj.Schema;
            MetadataItem database = obj.Database;

            try
            {
                string[] restrictions = new string[6];
                restrictions[3] = database != null ? database.Name : null;
                restrictions[4] = schema != null ? schema.Name : null;
                restrictions[5] = obj.Name;

                DataTable schemaTable = _connection.GetSchema(DB2MetaDataCollectionNames.ForeignKeys, restrictions);

                MetadataForeignKeysFetcherFromDatatable mrf = new MetadataForeignKeysFetcherFromDatatable(foreignKeys, loadingOptions);

                mrf.PkSchemaFieldName   = "PKTABLE_SCHEMA";
                mrf.PkDatabaseFieldName = "PKTABLE_CATALOG";
                mrf.PkNameFieldName     = "PKTABLE_NAME";
                mrf.FkFieldName         = "FKTABLE_NAME";
                mrf.PkFieldName         = "PKCOLUMN_NAME";
                mrf.FkFieldName         = "FKCOLUMN_NAME";
                mrf.OrdinalFieldName    = "KEY_SEQ";
                mrf.Datatable           = schemaTable;

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