private void btnDataSourceChoose_Click(object sender, EventArgs e)
 {
     this.CheckConnStringAssigned(() =>
     {
         string tableNameFilter = txtTableNameFilter.Text;
         TableDAL tableDAL = new MSSQLTableDAL(this.ConnStr);
         IEnumerable<string> dsTables = tableDAL.GetAllTables();
         if (!string.IsNullOrEmpty(tableNameFilter))
         {
             dsTables = dsTables.Where(row => row.ToUpper().Contains(tableNameFilter.ToUpper()));
         }
         tvAllTables.Nodes.Clear();
         foreach (var item in dsTables)
         {
             tvAllTables.Nodes.Add(item);
         }
         this.ShowMessage("已选择数据源");
     });
 }
        private void btnPrepareDBTables_Click(object sender, EventArgs e)
        {
            this.CheckConnStringAssigned(() =>
            {
                List<string> tableNames = new List<string>();
                foreach (TreeNode item in tvAllTables.Nodes)
                {
                    if (item.Checked)
                    {
                        tableNames.Add(item.Text);
                    }
                }

                tvSource.Nodes.Clear();
                tvSource.ImageList = imageList1;
                TableDAL tableDAL = new MSSQLTableDAL(this.ConnStr);
                var dbTables = tableDAL.GetAllTableSchema(tableNames);
                foreach (var dbTable in dbTables)
                {
                    var tableNode = new TreeNode(dbTable.TableName);
                    tableNode.ImageIndex = tableNode.SelectedImageIndex = 0;
                    tableNode.Tag = dbTable;
                    if (dbTable.PrimaryKey != null)
                    {
                        var pkNode = new TreeNode(dbTable.PrimaryKey.ColumnName);
                        pkNode.ImageIndex = pkNode.SelectedImageIndex = 2;
                        pkNode.Tag = dbTable.PrimaryKey;
                        tableNode.Nodes.Add(pkNode);
                    }

                    foreach (var fk in dbTable.ForeignKeys)
                    {
                        var fkNode = new TreeNode(fk.ColumnName);
                        fkNode.ImageIndex = fkNode.SelectedImageIndex = 3;
                        fkNode.Tag = fk;
                        tableNode.Nodes.Add(fkNode);
                    }

                    foreach (var column in dbTable.Columns)
                    {
                        var commonNode = new TreeNode(column.ColumnName);
                        commonNode.ImageIndex = commonNode.SelectedImageIndex = 1;
                        commonNode.Tag = column;
                        tableNode.Nodes.Add(commonNode);
                    }

                    tvSource.Nodes.Add(tableNode);
                    this.ShowMessage("已加载表【{0}】信息", dbTable.TableName);
                }
            });
        }