public static ConnectionString GetRemoteConnectionString(this DatabaseConfiguration databaseConfiguration, DatabaseServerAuthentications databaseServerAuthentications)
        {
            var databaseName = databaseConfiguration.DatabaseName;

            var databaseSpecification = databaseConfiguration.DatabaseServersByDatabaseName[databaseName];

            var databaseServerSpecification = databaseConfiguration.DatabaseAuthenticationsByServerName[databaseSpecification.ServerName];

            var databaseServerLocation = databaseConfiguration.DatabaseServerLocationsByServerName[databaseSpecification.ServerName];

            var databaseServerAuthentication = databaseServerAuthentications.DatabaseServerAuthenticationsByAuthenticationName[databaseServerSpecification.AuthenticationName];

            var databaseInformation = KnossosUtilities.GetDatabaseInformation(databaseSpecification, databaseServerSpecification, databaseServerLocation, databaseServerAuthentication);

            var connectionStringBuilder = new SqlConnectionStringBuilder()
            {
                DataSource     = databaseInformation.DataSource.Value,
                InitialCatalog = databaseInformation.DatabaseName.Value,
                UserID         = databaseInformation.Username.Value,
                Password       = databaseInformation.Password.Value,
            };

            var connectionString = new ConnectionString(connectionStringBuilder.ToString());

            return(connectionString);
        }
        public static ConnectionString GetConnectionString(this DatabaseConfiguration databaseConfiguration, DatabaseServerAuthentications databaseServerAuthentications)
        {
            ConnectionString connectionString;

            switch (databaseConfiguration.LocalOrRemote)
            {
            case LocalOrRemote.Local:
                connectionString = databaseConfiguration.GetLocalConnectionString();
                break;

            case LocalOrRemote.Remote:
                connectionString = databaseConfiguration.GetRemoteConnectionString(databaseServerAuthentications);
                break;

            default:
                throw new Exception(EnumerationHelper.UnexpectedEnumerationValueMessage(databaseConfiguration.LocalOrRemote));
            }

            return(connectionString);
        }