Example #1
0
        private void InitializeNewKey( )
        {
            ClearKeyPropertyControls();
            _newKey = new ForeignKeyWrapper(_cp);

            txtName.ReadOnly = false;

            _newKey.HostTable  = cmbHostTables.SelectedItem as TableWrapper;
            cmbFk.SelectedItem = null;
            cmbFk.Enabled      = false;

            if (_hostTable != null)
            {
                SelectedHostTable = _hostTable.Name;
            }
            else if (cmbHostTables.Items.Count > 0)
            {
                cmbHostTables.SelectedIndex = 0;
            }

            if (_afterNewKeyCreated != null)
            {
                _afterNewKeyCreated(this, SelectedKey);
            }
        }
Example #2
0
        private void RenderKeyProperties( )
        {
            ForeignKeyWrapper fk = cmbFk.SelectedItem as ForeignKeyWrapper;

            if (fk == null)
            {
                ClearKeyPropertyControls();
                return;
            }

            //Select host table from combo
            cmbHostTables.SelectedIndex = cmbHostTables.FindStringExact(fk.HostTable.Name);

            txtName.Text             = fk.Name;
            txtName.ReadOnly         = true;
            chkCascadeUpdate.Checked = fk.CascadeUpdate;
            chkCascadeDelete.Checked = fk.CascadeDelete;
            chkNotForRep.Checked     = fk.NotForReplication;

            //Select reference table from combo
            cmbRefTables.SelectedIndex = cmbRefTables.FindStringExact(fk.RefTable.Name);

            //Populate reference primary keys and select exact key in combo
            PopulateReferenceTablePrimaryKeys(fk.ReferencedKey.Name);

            //Populate columns
            PopulateColumns();
        }
Example #3
0
        private void PopulateColumns( )
        {
            _tblCols.Clear();
            TableWrapper      hostTable    = cmbRefTables.SelectedItem as TableWrapper;
            NameIdPair        pkConstraint = cmbRefPk.SelectedItem as NameIdPair;
            ForeignKeyWrapper fk           = cmbFk.SelectedItem as ForeignKeyWrapper;


            if (hostTable == null || pkConstraint == null || fk == null)
            {
                return;
            }

            DataTable tbl    = DbCmd.GetColumnsByForeignKey(_cp, hostTable.ID, pkConstraint.Id);
            DataRow   newRow = null;

            foreach (DataRow row in tbl.Rows)
            {
                newRow            = _tblCols.NewRow();
                newRow["refCol"]  = row["colName"];
                newRow["hostCol"] = fk.GetColumns((string)row["colName"]);
                _tblCols.Rows.Add(newRow);
            }
            bsCols.DataSource = _tblCols;
        }
Example #4
0
        private void SaveKey( )
        {
            grd.EndEdit();
            string err = String.Empty;

            if (!ValidateInput(ref err))
            {
                MessageService.ShowError(err);
                return;
            }


            string hostCols = String.Empty;
            string refCols  = String.Empty;

            GenerateCols(out hostCols, out refCols);
            SelectedKey.ColsHost = hostCols;
            SelectedKey.ColsRef  = refCols;
            bool isNew = _newKey != null;

            try
            {
                _initializing = true;
                if (_newKey != null)
                {
                    _newKey.Create();
                    _newKey = null;
                }
                else if (SelectedKey != null)
                {
                    SelectedKey.DropAndRecreateKey();
                }

                InitializeForeignKeys(_mode, _hostTable, true);

                if (isNew && _afterNewKeySaved != null)
                {
                    _afterNewKeySaved(this, SelectedKey);
                }
                else if (_afterKeySaved != null)
                {
                    _afterKeySaved(this, SelectedKey);
                }
            }
            catch (Exception ex)
            {
                MessageService.ShowError(ex.Message);
            }
            finally
            {
                _initializing = false;
            }
        }
Example #5
0
        public void InitializeForeignKeys(TableKeyEditorMode mode, TableWrapper hostTable, long keyid)
        {
            try
            {
                _initializing = true;


                Mode = mode;

                cmbFk.Items.Clear();

                _hostTable = null;
                _newKey    = null;
                _hostTable = hostTable;

                cmbFk.Enabled = true;

                // Populate host tables. If host table is not null select proper table
                DbCmd.PopulateUserDefinedTablesCombo(cmbHostTables, _cp, ((_hostTable != null && Mode == TableKeyEditorMode.SingleTable) ? _hostTable.ID : -1));

                if (_hostTable != null)
                {
                    cmbHostTables.SelectedIndex = cmbHostTables.FindStringExact(_hostTable.Name);
                    PopulateHostColumnsCombo();
                }
                cmbHostTables.Enabled = (_hostTable != null && Mode == TableKeyEditorMode.SingleTable);

                //Populate reference tables combo
                DbCmd.PopulateUserDefinedTablesCombo(cmbRefTables, _cp, -1);

                ForeignKeyWrapper fk = new ForeignKeyWrapper(_cp);
                fk.ID = keyid;
                fk.LoadProperties();
                fk.GetKey();

                cmbFk.Items.Add(fk);
                cmbFk.SelectedIndex = 0;
                RenderKeyProperties();
            }
            finally
            {
                _initializing = false;
                if (cmbFk.Items.Count == 0)
                {
                    InitializeNewKey();
                }
            }
        }
Example #6
0
        private void RenameKey( )
        {
            if (SelectedKey == null)
            {
                return;
            }

            string newName = SelectedKey.Name;

            if (InputDialog.ShowDialog("Rename Primary Key", "New Name", ref newName) != DialogResult.OK)
            {
                return;
            }

            if (SelectedKey.Name.ToLowerInvariant() == newName.ToLowerInvariant())
            {
                return;
            }

            try
            {
                string hostCols = String.Empty;
                string refCols  = String.Empty;
                GenerateCols(out hostCols, out refCols);
                SelectedKey.ColsHost = hostCols;
                SelectedKey.ColsRef  = refCols;

                SelectedKey.Rename(newName);
                txtName.Text = newName;

                ForeignKeyWrapper key = SelectedKey;

                int index = cmbFk.SelectedIndex;
                cmbFk.Items.Remove(key);
                cmbFk.Items.Insert(index, key);
                cmbFk.SelectedIndex = index;

                if (_afterKeyRenamed != null)
                {
                    _afterKeyRenamed(this, SelectedKey);
                }
            }
            catch (Exception ex)
            {
                MessageService.ShowError(ex.Message);
            }
        }
Example #7
0
        public static void PopulateForeignKeysCombo(ComboBox cmb, ConnectionParams cp, string tableName)
        {
            if (cmb == null)
            {
                return;
            }

            cmb.Items.Clear();

            using (SqlConnection conn = cp.CreateSqlConnection(true, false))
            {
                ServerConnection  srvConn = new ServerConnection(conn);
                Server            srv     = new Server(srvConn);
                Database          db      = srv.Databases[srvConn.DatabaseName];
                Table             hostTbl = db.Tables[tableName];
                ForeignKeyWrapper key     = null;

                foreach (ForeignKey fk in hostTbl.ForeignKeys)
                {
                    key = new ForeignKeyWrapper(cp);
                    //Load properties
                    key.ID   = fk.ID;
                    key.Name = fk.Name;

                    key.HostTable.ID        = fk.Parent.ID;
                    key.HostTable.Name      = fk.Parent.Name;
                    key.HostTable.Owner     = fk.Parent.Schema;
                    key.HostTable.FileGroup = fk.Parent.FileGroup;
                    key.HostTable.LoadColumns(fk.Parent);

                    Table refTbl = db.Tables[fk.ReferencedTable];
                    key.RefTable.ID        = refTbl.ID;
                    key.RefTable.Name      = refTbl.Name;
                    key.RefTable.Owner     = refTbl.Schema;
                    key.RefTable.FileGroup = refTbl.FileGroup;
                    key.RefTable.LoadColumns(refTbl);

                    cmb.Items.Add(key);
                }
            }
        }
Example #8
0
        private void DropSelectedForeignKeys( )
        {
            if (grd.SelectedRows.Count == 0)
            {
                return;
            }

            if (!MessageService.AskQuestion("Are you sure you want to drop selected foreign keys?"))
            {
                return;
            }

            ForeignKeyWrapper key = null;

            try
            {
                IList <DataGridViewRow> delList = new List <DataGridViewRow>();
                foreach (DataGridViewRow row in grd.SelectedRows)
                {
                    key    = new ForeignKeyWrapper(_cp);
                    key.ID = (int)row.Cells[0].Value;
                    ForeignKeyWrapper.Drop(_cp, (string)row.Cells[3].Value, (string)row.Cells[4].Value);
                    delList.Add(row);
                }

                foreach (DataGridViewRow row in delList)
                {
                    grd.Rows.Remove(row);
                }
            }
            catch (Exception ex)
            {
                MessageService.ShowError(ex.Message);
            }
            finally
            {
                //KeyPanelVisible = false;
            }
        }
Example #9
0
 void _foreignKeyEdit_AfterKeyDropped(object sender, ForeignKeyWrapper key)
 {
     KeyPanelVisible = false;
 }
Example #10
0
 void _foreignKeyEdit_AfterKeyRenamed(object sender, ForeignKeyWrapper key)
 {
     ChangeHeaderText(key.HostTable.FullName, key.Name);
 }
Example #11
0
        public void InitializeForeignKeys(TableKeyEditorMode mode, TableWrapper hostTable, bool renderLast)
        {
            try
            {
                _initializing = true;

                Mode = mode;

                _hostTable = null;
                _newKey    = null;
                _hostTable = hostTable;

                cmbFk.Enabled = true;

                // Populate host tables. If host table is not null select proper table
                DbCmd.PopulateUserDefinedTablesCombo(cmbHostTables, _cp, ((_hostTable != null && Mode == TableKeyEditorMode.SingleTable) ? _hostTable.ID : -1));

                if (_hostTable != null)
                {
                    cmbHostTables.SelectedIndex = cmbHostTables.FindStringExact(_hostTable.Name);
                    PopulateHostColumnsCombo();
                }
                cmbHostTables.Enabled = (_hostTable != null && Mode == TableKeyEditorMode.SingleTable);

                //Populate reference tables combo
                DbCmd.PopulateUserDefinedTablesCombo(cmbRefTables, _cp, -1);

                //Populate foreign keys combo box
                DbCmd.PopulateForeignKeysComboSimple(cmbFk, _cp, _hostTable != null ? _hostTable.ID : -1);

                //Select first item in the foreign keys combo box
                if (cmbFk.Items.Count > 0)
                {
                    if (renderLast)
                    {
                        cmbFk.SelectedIndex = cmbFk.Items.Count - 1;
                    }
                    else
                    {
                        cmbFk.SelectedIndex = 0;
                    }

                    ForeignKeyWrapper fk = cmbFk.SelectedItem as ForeignKeyWrapper;
                    if (fk != null && !fk.AllPropsLoaded)
                    {
                        fk.LoadAllProperties();
                    }

                    RenderKeyProperties();
                }
                else
                {
                    cmbFk.SelectedIndex = -1;
                }
            }
            finally
            {
                _initializing = false;
                if (cmbFk.Items.Count == 0)
                {
                    InitializeNewKey();
                }
            }
        }