private static void SetConnectionStringNode([NotNull] string name, [NotNull] string sqlPrefix, [NotNull] SqlConnectionStringBuilder defaultConnectionString, [NotNull] Adapters.WebServer.ConnectionString connectionString)
        {
            Assert.ArgumentNotNull(name, nameof(name));
            Assert.ArgumentNotNull(sqlPrefix, nameof(sqlPrefix));
            Assert.ArgumentNotNull(defaultConnectionString, nameof(defaultConnectionString));
            Assert.ArgumentNotNull(connectionString, nameof(connectionString));

            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(defaultConnectionString.ConnectionString)
            {
                InitialCatalog     = connectionString.GenerateDatabaseName(name, sqlPrefix),
                IntegratedSecurity = false
            };

            connectionString.Value = builder.ToString();
            connectionString.SaveChanges();
        }
        public static void AttachDatabase(string name, string sqlPrefix, bool attachSql, string databasesFolderPath, Adapters.WebServer.ConnectionString connectionString, SqlConnectionStringBuilder defaultConnectionString, IPipelineController controller)
        {
            SetConnectionStringNode(name, sqlPrefix, defaultConnectionString, connectionString);

            if (!attachSql)
            {
                return;
            }

            var databaseName = connectionString.GenerateDatabaseName(name, sqlPrefix);

            var databasePath = GetDatabasePath(databasesFolderPath, connectionString, databaseName, ".mdf");

            if (!File.Exists(databasePath))
            {
                databasePath = GetDatabasePath(databasesFolderPath, connectionString, databaseName, ".dacpac");
                if (!File.Exists(databasePath))
                {
                    Log.Warn($"File cannot be found: {databasePath} (.dacpac or .mdf)");
                    return;
                }
            }

            if (SqlServerManager.Instance.DatabaseExists(databaseName, defaultConnectionString))
            {
                databaseName = ResolveConflict(defaultConnectionString, connectionString, databasePath, databaseName, controller);
            }

            if (databaseName != null)
            {
                var extension = Path.GetExtension(databasePath);
                if (extension == ".dacpac")
                {
                    new SqlAdapter(new SqlConnectionString(defaultConnectionString.ToString())).DeployDatabase(databaseName, new RealFileSystem().ParseFile(databasePath));
                    var tmpPath = SqlServerManager.Instance.GetDatabaseFileName(databaseName, defaultConnectionString);
                    SqlServerManager.Instance.DetachDatabase(databaseName, defaultConnectionString);

                    extension    = ".mdf";
                    databasePath = Path.Combine(Path.GetDirectoryName(databasePath), Settings.CoreInstallRenameSqlFiles.Value ? databaseName + extension : Path.GetFileNameWithoutExtension(databasePath) + extension);

                    File.Move(tmpPath, databasePath);
                }

                SqlServerManager.Instance.AttachDatabase(databaseName, databasePath, defaultConnectionString);
            }
        }