public static bool InitializeDatabaseAccessClasses(IDataContextHandler dataContextHandler, IDatabaseConnectionConfigurationStorage configurationStorage, params Type[] dbContextTypes) { DataContextManager.Initialize(dataContextHandler); foreach (var dbType in dbContextTypes) { dataContextHandler.RegisterDataContextType(dbType); if (!DatabaseConnectionConfigurator.CheckDatabaseConnection(dbType.Name, configurationStorage, (conf) => dataContextHandler.CheckConnectionForDataContext(dbType, conf), true)) { return(false); } } return(true); }
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); } } }