public IDictionary<ScriptFile, ISet<DatabaseObject>> GetDependencies(IEnumerable<ScriptFile> scripts) { // Map each script to the set of scripts on which it depends IDictionary<ScriptFile, ISet<DatabaseObject>> scriptsToDependencies = new Dictionary<ScriptFile, ISet<DatabaseObject>>(); var objectComparer = new DatabaseObjectComparer(); foreach (var s in scripts) { var scriptedDependencies = s.Dependencies.Select(y => y.SetDatabaseIfNotSpecified(s.ScriptObject.ServerName, s.ScriptObject.DatabaseName)) .Where(x => s.ScriptObject.ServerName.Equals(x.ServerName, StringComparison.InvariantCultureIgnoreCase) && s.ScriptObject.DatabaseName.Equals(x.DatabaseName, StringComparison.InvariantCultureIgnoreCase)); scriptedDependencies = scriptedDependencies.Where(d => scripts.Any(x => objectComparer.Equals(d, x.ScriptObject))); scriptsToDependencies.Add(s, new HashSet<DatabaseObject>(scriptedDependencies, objectComparer)); } return scriptsToDependencies; }
public IDictionary <ScriptFile, ISet <DatabaseObject> > GetDependencies(IEnumerable <ScriptFile> scripts) { // Map each script to the set of scripts on which it depends IDictionary <ScriptFile, ISet <DatabaseObject> > scriptsToDependencies = new Dictionary <ScriptFile, ISet <DatabaseObject> >(); var objectComparer = new DatabaseObjectComparer(); foreach (var s in scripts) { var scriptedDependencies = s.Dependencies.Select(y => y.SetDatabaseIfNotSpecified(s.ScriptObject.ServerName, s.ScriptObject.DatabaseName)) .Where(x => s.ScriptObject.ServerName.Equals(x.ServerName, StringComparison.InvariantCultureIgnoreCase) && s.ScriptObject.DatabaseName.Equals(x.DatabaseName, StringComparison.InvariantCultureIgnoreCase)); scriptedDependencies = scriptedDependencies.Where(d => scripts.Any(x => objectComparer.Equals(d, x.ScriptObject))); scriptsToDependencies.Add(s, new HashSet <DatabaseObject>(scriptedDependencies, objectComparer)); } return(scriptsToDependencies); }