Exemplo n.º 1
0
        private static bool Configure(string connectionId, Func <DatabaseConnectionConfiguration, bool> validateConfigFunc)
        {
            var configurationIsOk = false;

            try
            {
                using (var dialog = new DataConnectionDialog())
                {
                    dialog.ChooseDataSourceTitle = $"Database connection: {connectionId}";

                    dialog.Title = $"Database connection: {connectionId}";

                    // If you want the user to select from any of the available data sources, do this:
                    DataSource.AddStandardDataSources(dialog);

                    // OR, if you want only certain data sources to be available
                    // (e.g. only SQL Server), do something like this instead:
                    //dialog.DataSources.Add(DataSource.SqlDataSource);
                    //dialog.DataSources.Add(DataSource.SqlFileDataSource);

                    while (!configurationIsOk)
                    {
                        // The way how you show the dialog is somewhat unorthodox; `dialog.ShowDialog()`
                        // would throw a `NotSupportedException`. Do it this way instead:
                        DialogResult userChoice = DataConnectionDialog.Show(dialog);

                        // Return the resulting connection string if a connection was selected:
                        if (userChoice == DialogResult.OK)
                        {
                            var config = new DatabaseConnectionConfiguration();
                            config.ConnectionString = dialog.ConnectionString;
                            config.ConnectionId     = connectionId;
                            if (dialog.SelectedDataSource.Name.Contains("Oracle"))
                            {
                                config.DatabaseType = EDatabaseType.Oracle;
                            }
                            else
                            {
                                config.DatabaseType = EDatabaseType.MSSQLServer;
                            }

                            DatabaseConnectionManager.SaveConfiguration(config);

                            configurationIsOk = validateConfigFunc(config);
                        }
                        else
                        {
                            configurationIsOk = false;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }

            return(configurationIsOk);
        }
Exemplo n.º 2
0
        public static bool Configure(DatabaseConnectionConfiguration configuration)
        {
            try
            {
                using (var dialog = new DataConnectionDialog())
                {
                    dialog.ChooseDataSourceTitle = $"Database connection: {configuration.ConnectionId}";

                    dialog.Title = $"Database connection: {configuration.ConnectionId}";

                    DataSource.AddStandardDataSources(dialog);

                    if (!string.IsNullOrEmpty(configuration.ConnectionString))
                    {
                        if (configuration.DatabaseType == EDatabaseType.MSSQLServer)
                        {
                            dialog.SelectedDataSource = DataSource.SqlDataSource;
                        }
                        else
                        {
                            dialog.SelectedDataSource = DataSource.OracleDataSource;
                        }

                        dialog.ConnectionString = configuration.ConnectionString;
                    }

                    DialogResult userChoice = DataConnectionDialog.Show(dialog);

                    // Return the resulting connection string if a connection was selected:
                    if (userChoice == DialogResult.OK)
                    {
                        configuration.ConnectionString = dialog.ConnectionString;

                        if (dialog.SelectedDataSource.Name.Contains("Oracle"))
                        {
                            configuration.DatabaseType = EDatabaseType.Oracle;
                        }
                        else
                        {
                            configuration.DatabaseType = EDatabaseType.MSSQLServer;
                        }

                        DatabaseConnectionManager.SaveConfiguration(configuration);
                        return(true);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }

            return(false);
        }
        public static bool CheckDatabaseConnection(string connectionId, Func <DatabaseConnectionConfiguration, bool> validateConfigFunc, bool allowConfiguration, bool forceConfiguration = false)
        {
            LoggerService.LogDebugAsync("CheckRegisteredDatabasesConnections", () => new { allowConfiguration, forceConfiguration, connectionId }).Wait();
            if ((allowConfiguration || forceConfiguration) && DatabaseConnectionConfigurator == null)
            {
                var logmessage = "DatabaseConnectionConfigurator is null";
                LoggerService.LogAsync(logmessage, ELogType.Error, new { allowConfiguration, forceConfiguration, connectionId }).Wait();
                throw new InvalidOperationException(logmessage);
            }

            var connectionSucceeded = false;
            DatabaseConnectionConfiguration config = null;

            try
            {
                config = DatabaseConnectionManager.GetConfiguration(connectionId);
            }
            catch (DatabaseConnectionException)
            {
                config = new DatabaseConnectionConfiguration()
                {
                    ConnectionId = connectionId
                };
            }

            //do
            {
                try
                {
                    // Try the first time without configuring
                    if (forceConfiguration || !Validate())
                    {
                        // If it fails, try to configure, and then check again
                        if ((allowConfiguration || forceConfiguration) && DatabaseConnectionConfigurator.Configure(ref config))
                        {
                            DatabaseConnectionManager.SaveConfiguration(config);
                            connectionSucceeded = Validate();
                        }
                    }
                    else
                    {
                        connectionSucceeded = true;
                    }
                }
                catch (Exception ex)
                {
                    LoggerService.LogAsync(ex).Wait();
                }
            } //while (!connectionSucceeded && allowConfiguration);

            return(connectionSucceeded);

            bool Validate()
            {
                try
                {
                    return(validateConfigFunc(config));
                }
                catch (Exception dbe)
                {
                    LoggerService.Log(dbe);
                    return(false);
                }
            }
        }