public List<ServerBrowserNode> LoadChildNodes(ServerBrowserNode node) { using (var context = _contextFactory.Create()) { if (node == null) return new List<ServerBrowserNode>(new[] { new ServerBrowserNode { Text = "Server", Type = NodeType.Server } }); switch (node.Type) { case NodeType.Server: return GetServerBrowserNodes(); case NodeType.DatabaseRoot: return GetDatabaseRootNodes(context); case NodeType.Database: return GetDatabaseNodes(node); case NodeType.Programmability: return GetProgrammabilityNodes(node); case NodeType.FunctionRoot: return GetFunctionRootNodes(node); case NodeType.ScalarValuedFunctionRoot: return GetScalarValuedFunctionRootNodes(node); case NodeType.TableValuedFunctionRoot: return GetTableValuedFunctionRootNodes(node); case NodeType.Table: return GetTableNodes(node); case NodeType.ColumnRoot: return GetColumnRootNodes(node); case NodeType.ProcedureRoot: return GetProcedureRootNodes(node); case NodeType.TableRoot: return GetTableRootNodes(node); default: return new List<ServerBrowserNode>(); } } }
private static List<ServerBrowserNode> GetDatabaseNodes(ServerBrowserNode node) { return new List<ServerBrowserNode>(new[] { new ServerBrowserNode { Text = "Tables", Type = NodeType.TableRoot, ObjectId = node.ObjectId, Database = node.Database }, new ServerBrowserNode { Text = "Programmability", Type = NodeType.Programmability, ObjectId = node.ObjectId, Database = node.Database } }); }
private List<ServerBrowserNode> GetTableRootNodes(ServerBrowserNode node) { using (var contextInDb = _contextFactory.Create(node.Database)) { return new List<ServerBrowserNode>(contextInDb.Tables.Select(x => new ServerBrowserNode { ObjectId = x.object_id, Text = x.name, Type = NodeType.Table, Database = node.Database })); } }
private List<ServerBrowserNode> GetTableValuedFunctionRootNodes(ServerBrowserNode node) { using (var contextInDb = _contextFactory.Create(node.Database)) { return contextInDb.Objects.Where(x => x.type == "IF" || x.type == "TF").Select(x => new ServerBrowserNode { Database = node.Database, IsSingle = true, Text = x.name, Type = NodeType.TableValuedFunction, ObjectId = x.object_id }).ToList(); } }
private List<ServerBrowserNode> GetProcedureRootNodes(ServerBrowserNode node) { using (var contextInDb = _contextFactory.Create(node.Database)) { var procedures = (from p in contextInDb.Procedures join s in contextInDb.Schemas on p.schema_id equals s.schema_id select new ServerBrowserNode { ObjectId = p.object_id, Database = node.Database, Type = NodeType.Procedure, Text = s.name + "." + p.name, IsSingle = true }).ToList(); return procedures; } }
private List<ServerBrowserNode> GetColumnRootNodes(ServerBrowserNode node) { using (var contextInDb = _contextFactory.Create(node.Database)) { var columns = contextInDb.Columns.Where(x => x.object_id == node.ObjectId).Select(x => new ServerBrowserNode { Database = node.Database, ObjectId = x.column_id, Text = x.name, Type = NodeType.Column, IsSingle = true }).ToList(); return columns; } }
private static List<ServerBrowserNode> GetTableNodes(ServerBrowserNode node) { return new List<ServerBrowserNode>(new[] { new ServerBrowserNode { Text = "Columns", Type = NodeType.ColumnRoot, Database = node.Database, ObjectId = node.ObjectId } }); }
private static List<ServerBrowserNode> GetProgrammabilityNodes(ServerBrowserNode node) { return new List<ServerBrowserNode>(new[] { new ServerBrowserNode { Text = "Procedures", Type = NodeType.ProcedureRoot, ObjectId = node.ObjectId, Database = node.Database }, new ServerBrowserNode { Text = "Functions", Type = NodeType.FunctionRoot, ObjectId = node.ObjectId, Database = node.Database }, }); }
private static List<ServerBrowserNode> GetFunctionRootNodes(ServerBrowserNode node) { return new List<ServerBrowserNode>(new[] { new ServerBrowserNode { Text = "Table-valued Functions", Type = NodeType.TableValuedFunctionRoot, ObjectId = node.ObjectId, Database = node.Database }, new ServerBrowserNode { Text = "Scalar-valued Functions", Type = NodeType.ScalarValuedFunctionRoot, ObjectId = node.ObjectId, Database = node.Database }, }); }