public DatabaseConnectionFactory GetConnectionFactory(string databaseName) { // check if we already have a reference var factory = _connectionFactories.Get(databaseName); if (factory != null) { return factory; } var config = _mapDatabaseRef.Get(databaseName); if (config == null) { throw new DatabaseConfigException( "Cannot locate configuration information for database '" + databaseName + '\''); } var settings = config.ConnectionSettings; if (config.ConnectionFactoryDesc is DriverConnectionFactoryDesc dbConfig) { factory = new DatabaseDriverConnFactory(_container, dbConfig, settings); } else if (config.ConnectionFactoryDesc == null) { throw new DatabaseConfigException("No connection factory setting provided in configuration"); } else { throw new DatabaseConfigException("Unknown connection factory setting provided in configuration"); } _connectionFactories.Put(databaseName, factory); return factory; }
private void TryAndCloseConnection(ConnectionFactoryDesc connectionFactoryDesc) { var config = new ConfigurationCommonDBRef { ConnectionFactoryDesc = connectionFactoryDesc }; var connectionFactory = new DatabaseDriverConnFactory( container, (DriverConnectionFactoryDesc)config.ConnectionFactoryDesc, config.ConnectionSettings); var connection = connectionFactory.Driver.CreateConnection(); TryAndCloseConnection(connection); }