public Key Clone() { Key key = new Key(this._table); key.KeyType = this.KeyType; key.Name = this.Name; key.ReferencedTableName = this.ReferencedTableName; foreach (string str in this.ReferencedColumns) { key.ReferencedColumns.Add(str, this.ReferencedColumns[str]); } return key; }
protected override void PopulateKeyCollection() { try { base.Database.Connect(); Interop.IKeys keys = this.GetDmoTable(this.Name).GetKeys(); int count = keys.GetCount(); for (int i = 1; i <= count; i++) { Interop.IKey key = keys.Item(i); Microsoft.Matrix.Packages.DBAdmin.DBEngine.Key key2 = new Microsoft.Matrix.Packages.DBAdmin.DBEngine.Key(this); key2.Name = key.GetName(); switch (key.GetType()) { case 1: key2.KeyType = KeyType.Primary; break; case 2: key2.KeyType = KeyType.Unique; break; case 3: key2.KeyType = KeyType.Foreign; break; default: throw new Exception("Unknown key type: " + key.GetType()); } if (key2.KeyType == KeyType.Foreign) { string[] identifierParts = SqlHelper.GetIdentifierParts(key.GetReferencedTable()); key2.ReferencedTableName = identifierParts[identifierParts.Length - 1]; Interop.INames keyColumns = key.GetKeyColumns(); Interop.INames referencedColumns = key.GetReferencedColumns(); int num3 = keyColumns.GetCount(); for (int j = 1; j <= num3; j++) { key2.ReferencedColumns.Add(keyColumns.Item(j), referencedColumns.Item(j)); } } else { Interop.INames names3 = key.GetKeyColumns(); int num5 = names3.GetCount(); for (int k = 1; k <= num5; k++) { key2.ReferencedColumns.Add(names3.Item(k), string.Empty); } } base.KeyObjects.Add(key2); } } finally { base.Database.Disconnect(); } }
public void CreateKey(Key key) { if (key.KeyType == KeyType.Primary) { throw new ArgumentException("The key specified must not be a primary key. Only foreign and unique keys can be created using this method.", "key"); } try { base.Database.Connect(); ArrayList keys = new ArrayList(1); keys.Add(key); this.CreateKeys(keys); } finally { base.Database.Disconnect(); } }
protected internal abstract bool DeleteKey(Key key);
protected override void PopulateKeyCollection() { try { base.Database.Connect(); Interop.IKeys keys = this.GetAdoxTable(this.Name).GetKeys(); int count = keys.GetCount(); for (int i = 0; i < count; i++) { Interop.IKey item = keys.GetItem(i); Microsoft.Matrix.Packages.DBAdmin.DBEngine.Key key2 = new Microsoft.Matrix.Packages.DBAdmin.DBEngine.Key(this); key2.Name = item.GetName(); switch (item.GetType()) { case 1: key2.KeyType = KeyType.Primary; break; case 2: key2.KeyType = KeyType.Foreign; break; case 3: key2.KeyType = KeyType.Unique; break; default: throw new Exception("Unknown key type: " + item.GetType()); } if (key2.KeyType == KeyType.Foreign) { key2.ReferencedTableName = item.GetRelatedTable(); Interop.IColumns columns = item.GetColumns(); int num3 = columns.GetCount(); for (int j = 0; j < num3; j++) { Interop.IColumn column = columns.GetItem(j); key2.ReferencedColumns.Add(column.GetName(), column.GetRelatedColumn()); } } else { Interop.IColumns columns2 = item.GetColumns(); int num5 = columns2.GetCount(); for (int k = 0; k < num5; k++) { Interop.IColumn column2 = columns2.GetItem(k); key2.ReferencedColumns.Add(column2.GetName(), string.Empty); } } base.KeyObjects.Add(key2); } } finally { base.Database.Disconnect(); } }