コード例 #1
0
        private string DeleteActonText()
        {
            switch (DeleteAction)
            {
            case null:
                return("");

            default:
                return(ForeignKey.DeleteActionToString(DeleteAction.Value));
            }
        }
コード例 #2
0
        public ForeignKeysOverviewTabPage(DatabaseObject table, TableDependencyGraph dependencies)
        {
            InitializeComponent();

            if (dependencies[table].Children.Count == 0)
            {
                Label labelEmpty = NewLabel();
                labelEmpty.Text   = "No foreign keys";
                labelEmpty.Font   = new Font(labelEmpty.Font, FontStyle.Italic);
                labelEmpty.Margin = new Padding(0);
                flowLayoutPanelForeignKeys.Controls.Add(labelEmpty);
            }
            else
            {
                bool   OK;
                string explanation;
                IList <Tuple <DependencyEdge, string> > keys = Optimizer.Instance.CheckDeleteCascade(dependencies[table], out OK, out explanation);
                foreach (Tuple <DependencyEdge, string> key in keys)
                {
                    Label labelForeignKey = NewLabel();
                    labelForeignKey.Text   = $"{key.Item2}: {key.Item1.Name} - {ForeignKey.DeleteActionToString(key.Item1.ForeignKey.DeleteAction)}";
                    labelForeignKey.Margin = new Padding(key.Item2.Count(ch => ch == '.') * 20, 0, 0, 0);
                    flowLayoutPanelForeignKeys.Controls.Add(labelForeignKey);
                }
                if (OK)
                {
                    labelStatus.Text = "OK";
                }
                else
                {
                    labelStatus.Text      = "NOK";
                    labelStatus.ForeColor = Color.Red;
                }
                if (explanation.Length > 0)
                {
                    labelStatus.Text += " - " + explanation;
                }
            }

            Dock = DockStyle.Fill;
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: Sqeee/db_optimize_tools
        private static void ProcessFKDeleteActionsCommand(string args)
        {
            if (args == "")
            {
                Console.WriteLine(NO_TABLE_SELECTED);
                return;
            }
            IList <string>         errors;
            IList <DatabaseObject> tables = GetTablesFromArgs(args, out errors);

            if (errors.Count > 0)
            {
                foreach (string error in errors)
                {
                    Console.WriteLine(error);
                }
                return;
            }
            foreach (DatabaseObject table in tables)
            {
                Console.WriteLine($"Table: {table.NameWithSchemaBrackets}");
                if (_dependencies[table].Children.Count == 0)
                {
                    Console.WriteLine("No foreign keys");
                }
                else
                {
                    bool          OK;
                    string        explanation;
                    StringBuilder hierarchyFK = new StringBuilder();
                    IList <Tuple <DependencyEdge, string> > keys = Optimizer.Instance.CheckDeleteCascade(_dependencies[table], out OK, out explanation);
                    foreach (Tuple <DependencyEdge, string> key in keys)
                    {
                        hierarchyFK.AppendLine($"{new string(' ', key.Item2.Count(ch => ch == '.'))}{key.Item2}: {key.Item1.Name} - {ForeignKey.DeleteActionToString(key.Item1.ForeignKey.DeleteAction)}");
                    }
                    if (OK)
                    {
                        Console.Write("OK");
                    }
                    else
                    {
                        Console.Write("NOK");
                    }
                    if (explanation.Length > 0)
                    {
                        Console.WriteLine($" - {explanation}");
                    }
                    if (hierarchyFK.Length > 0)
                    {
                        Console.Write(hierarchyFK);
                    }
                }
                Console.WriteLine(SEPARATOR);
                Console.WriteLine();
            }
        }