예제 #1
0
        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;
        }
예제 #2
0
        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);
        }