Пример #1
0
 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;
 }
Пример #2
0
        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();
            }
        }
Пример #3
0
 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();
     }
 }
Пример #4
0
 protected internal abstract bool DeleteKey(Key key);
Пример #5
0
        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();
            }
        }