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); }