Example #1
0
        internal virtual void AddForeignColumn(string catalog, string schema,
                                               string physicalTableName, string physicalColumnName, bool primary)
        {
            Tables tables = null;

            if ((catalog != null && catalog.Length > 0) ||
                (schema != null && schema.Length > 0))
            {
                string cat_schema = catalog != string.Empty ? catalog : schema;
                tables = this.dbRoot.Databases[cat_schema].Tables as Tables;
            }
            else
            {
                // This DBMS is a one horse database
                tables = (Tables)this.ForeignKeys.Table.Database.Tables;
            }

            Column column = tables[physicalTableName].Columns[physicalColumnName] as Column;
            Column c      = column.Clone();

            if (primary)
            {
                if (null == _primaryColumns)
                {
                    _primaryColumns            = (Columns)this.dbRoot.ClassFactory.CreateColumns();
                    _primaryColumns.ForeignKey = this;
                }

                _primaryColumns.AddColumn(c);
            }
            else
            {
                if (null == _foreignColumns)
                {
                    _foreignColumns            = (Columns)this.dbRoot.ClassFactory.CreateColumns();
                    _foreignColumns.ForeignKey = this;
                }

                _foreignColumns.AddColumn(c);
            }

            column.AddForeignKey(this);
        }