private void UpdateConnectionString() { if (_isConnectionStringUpdating) { return; } using (new DisposableToken <ConnectionStringBuilder>(this, x => x.Instance._isConnectionStringUpdating = true, x => x.Instance._isConnectionStringUpdating = false)) { var providerName = DatabaseProvider; var connectionString = ConnectionString; var providers = DbProvider.GetRegisteredProviders(); DbConnectionString displayedConnectionsString = null; DbProvider dbProvider = null; if (string.IsNullOrEmpty(providerName)) { foreach (var providerKeyValue in providers) { var currentProvider = providerKeyValue.Value; try { displayedConnectionsString = currentProvider.CreateConnectionString(connectionString); } catch { continue; } dbProvider = currentProvider; break; } } else { if (providers.TryGetValue(providerName, out dbProvider)) { displayedConnectionsString = dbProvider.CreateConnectionString(connectionString); } } _connectionStringTextBox.SetCurrentValue(TextBox.TextProperty, displayedConnectionsString?.ToDisplayString()); SetCurrentValue(DatabaseProviderProperty, dbProvider?.ProviderInvariantName); _dbProvider = dbProvider?.Info; } }