public void Add(IInstallStatement statement) { if (statement == null) { throw new ArgumentNullException("statement"); } if (!statement.ObjectName.StartsWith("@")) { List<DependencyNode> dependencyNodes; if (!dependencies.TryGetValue(statement.ObjectName, out dependencyNodes)) { dependencyNodes = new List<DependencyNode>(); dependencies.Add(statement.ObjectName, dependencyNodes); } dependencyNodes.Add(new DependencyNode(statement.ObjectName, statement)); } }
public DependencyNode(string objectName, IInstallStatement statement) { this.objectName = objectName; this.statement = statement; foreach (SqlName referencedObjectName in statement.GetReferencedObjectNames<SqlName>().Where(n => !(IsLocalName(n) || n.Value.Equals(objectName, StringComparison.OrdinalIgnoreCase)))) { edges.Add(referencedObjectName.Value); } }
private static IEnumerable<IInstallStatement> HandleDependendObjects(IInstallStatement statement, DatabaseInventory inventory, ICollection<string> droppedObjects) { DependencyDisablingAlterStatement dependencyAltering = statement as DependencyDisablingAlterStatement; if (dependencyAltering != null) { ICollection<IAlterableCreateStatement> dependencyObjects = dependencyAltering.GetDependencyObjects(inventory, droppedObjects); foreach (IAlterableCreateStatement dependencyObject in dependencyObjects) { yield return dependencyObject.CreateDropStatement(); } yield return statement; foreach (IAlterableCreateStatement dependencyObject in dependencyObjects) { yield return dependencyObject; } } else { yield return statement; } }