예제 #1
0
        public List <string> GetTableOrderByDependencies()
        {
            //Chứa cặp các table và các dependency của chúng
            Dictionary <string, Item> existedAdj = new Dictionary <string, Item>();
            List <Item> graphTableDependency     = new List <Item>();

            List <string> tables = _dbUtilities.GetAllTable();

            foreach (var table in tables)
            {
                List <Item> adjTableDenpendencies = new List <Item>();
                //List các table dependency của table
                var dependencies = _dbUtilities.GetAllTableDependOn(table).ToArray();

                foreach (var dependency in dependencies)
                {
                    if (!table.Equals(dependency))               //Kiểm tra có phải là chính nó
                    {
                        if (!existedAdj.ContainsKey(dependency)) //Kiểm tra là đã tạo Item này chưa
                        {
                            var item = new Item(dependency);
                            existedAdj.Add(item.Name, item);
                        }
                        adjTableDenpendencies.Add(existedAdj[dependency]); //Tạo mới cạnh
                    }
                }
                //Tạo mới đỉnh là table các cạch là adjTableDenpendencies
                graphTableDependency.Add(new Item(table, adjTableDenpendencies.ToArray()));
            }

            return(TopologicalSort.Sort(graphTableDependency.ToArray(), x => x.Dependencies));
        }
예제 #2
0
        private void chklistboxTable_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            if (needItemCheck)
            {
                if (updatingCheckList)
                {
                    return;
                }

                try
                {
                    updatingCheckList = true;
                    var    result           = "";
                    string item             = chklistboxTable.SelectedItem.ToString();
                    int    indexOfItemCheck = chklistboxTable.Items.IndexOf(item);

                    if (chklistboxTable.GetItemCheckState(indexOfItemCheck) == CheckState.Unchecked)
                    {
                        var dependtables = _dbUtilities.GetAllTableDependOn(item);

                        foreach (var dependtable in dependtables)
                        {
                            result += dependtable + "\n";
                        }

                        for (int i = 0; i < dependtables.Count; i++)
                        {
                            var index = chklistboxTable.Items.IndexOf(dependtables[i]);
                            chklistboxTable.SetItemChecked(index, true);
                        }

                        if (result != null && result.Length != 0)
                        {
                            MessageBox.Show(result);
                        }
                    }
                }
                finally
                {
                    updatingCheckList = false;
                }
            }
        }