private Dictionary <string, Dictionary <DatabaseEnvironment, DataScript> > EnumerateDataScripts(string databaseProjectDirectoryPath, DataScriptType dataScriptType)
        {
            DirectoryInfo dataScriptsDirectoryInfo = new DirectoryInfo(Path.Combine(Path.GetDirectoryName(databaseProjectDirectoryPath), "_Data", dataScriptType.ToString()));
            Dictionary <string, Dictionary <DatabaseEnvironment, DataScript> > dataScripts = new Dictionary <string, Dictionary <DatabaseEnvironment, DataScript> >();

            if (dataScriptsDirectoryInfo.Exists)
            {
                FileInfo[]    dataScriptFiles = dataScriptsDirectoryInfo.GetFiles("*.sql", SearchOption.AllDirectories);
                List <string> failedScripts   = new List <string>();
                foreach (FileInfo staticDataFileInfo in dataScriptFiles)
                {
                    try
                    {
                        DataScript dataScript = new DataScript
                        {
                            Name        = Path.GetFileNameWithoutExtension(staticDataFileInfo.Name),
                            Type        = dataScriptType,
                            Environment = this.ParseEnvironment(staticDataFileInfo.Directory.Name),
                            Path        = staticDataFileInfo.FullName
                        };
                        // Check whether scripts with same name already exist
                        if (dataScripts.ContainsKey(dataScript.Name))
                        {
                            dataScripts[dataScript.Name].Add(dataScript.Environment, dataScript);
                        }
                        else
                        {
                            dataScripts.Add(dataScript.Name, new Dictionary <DatabaseEnvironment, DataScript> {
                                { dataScript.Environment, dataScript }
                            });
                        }
                    }
                    catch (Exception ex)
                    {
                        failedScripts.Add(staticDataFileInfo.FullName);
                    }
                }
            }
            return(dataScripts);
        }