private TResult GetTableOrView <TResult>(DbItemType itemType, string schemaName, string objName) where TResult : TableBase { Schema schema = this.Schemas[schemaName]; if (schema != null) { TableBase result = itemType == DbItemType.Table ? (TableBase)schema.Tables[objName] : schema.Views[objName]; return((TResult)(result)); } return(null); }
public static DBObjectUrn Parse(string urn) { string[] items = urn.Split('/'); DBObjectUrn result = new DBObjectUrn(); foreach (string item in items) { if (string.IsNullOrEmpty(item)) { continue; } string[] subitems1 = item.Split('['); DbItemType itemType = (DbItemType)Enum.Parse(enumType, subitems1[0], true); string namePart = subitems1[1]; int startIdx = namePart.IndexOf("'"); int endIdx = namePart.IndexOf("'", startIdx + 1); string itemName = namePart.Substring(startIdx + 1, endIdx - startIdx - 1); if (itemType == DbItemType.Table /*|| itemType == View*/) { if (namePart.ToLower().Contains("@schema")) { ; } { startIdx = namePart.IndexOf("'", endIdx + 1); if (startIdx > -1) { endIdx = namePart.IndexOf("'", startIdx + 1); if (endIdx > -1) { result.TableSchema = namePart.Substring(startIdx + 1, endIdx - startIdx - 1); } } } } result.parts[itemType] = itemName; } return(result); }
private void TableNodeChecked(TreeNode checkedNode) { if (nodeCheckedChangeDisabled) { return; } bool isChecked = checkedNode.Checked; DBObject checkedDbObject = (DBObject)checkedNode.Tag; DbItemType checkedNodeItemType = checkedDbObject.ItemType; nodeCheckedChangeDisabled = true; try { RecursiveCheckNodes(checkedNode.Nodes, isChecked); if (checkedNode.Parent != null) { if (isChecked) { checkedNode.Parent.Checked = true; } else { int childNodesChecked = 0; IterateTreeNodes(checkedNode.Parent.Nodes, (o, node) => { if (node.Checked) { childNodesChecked++; } }); if (childNodesChecked == 0) { checkedNode.Parent.Checked = false; } } } if (isChecked) { List <TreeNode> nodesToAutoCheck = new List <TreeNode>(); switch (checkedNodeItemType) { case DbItemType.Database: { selectedTableColumns.Clear(); Database checkedDB = (Database)checkedDbObject; var allDatabaseColumns = checkedDB.Schemas.Select(schema => schema.Tables).SelectMany(list => list).Select( table => table.Columns).SelectMany(list => list); selectedTableColumns.AddRange(allDatabaseColumns); break; } case DbItemType.Table: { nodesToAutoCheck.Add(checkedNode); Table checkedTable = (Table)checkedDbObject; foreach (var column in checkedTable.Columns) { AddOrRemoveSelectedTableColumn(column, true); } break; } case DbItemType.Schema: { nodesToAutoCheck.AddRange(checkedNode.Nodes.OfType <TreeNode>().ToArray()); Schema chckedSchema = (Schema)checkedDbObject; var schemaTablesColumns = chckedSchema.Tables.Select(table => table.Columns).SelectMany(list => list); foreach (var column in schemaTablesColumns) { AddOrRemoveSelectedTableColumn(column, true); } break; } } if (nodesToAutoCheck.Count > 0) { AutoCheckDependencyTables(nodesToAutoCheck.ToArray()); } } else { switch (checkedNodeItemType) { case DbItemType.Database: { selectedTableColumns.Clear(); break; } case DbItemType.Table: { Table checkedTable = (Table)checkedDbObject; selectedTableColumns.RemoveAll(column => checkedTable.Columns.Contains(column)); break; } case DbItemType.Schema: { Schema chckedSchema = (Schema)checkedDbObject; var schemaTablesColumns = chckedSchema.Tables.Select(table => table.Columns).SelectMany(list => list); selectedTableColumns.RemoveAll(column => schemaTablesColumns.Contains(column)); break; } } } ReflectColumnsCheckedState(); } finally { nodeCheckedChangeDisabled = false; } CheckNextButton(); }
public string this[DbItemType itemType] { get { return(parts[itemType]); } }