public IDatabase OpenDatabase(IConfiguration configuration)
{
lock (this) {
if (configuration == null)
throw new ArgumentNullException("configuration");
var databaseName = configuration.GetString("database.name");
if (String.IsNullOrEmpty(databaseName))
throw new ArgumentException("The configuration must specify a database name.");
Database database;
if (databases == null ||
!databases.TryGetValue(databaseName, out database))
throw new InvalidOperationException(String.Format("Database '{0}' does not exist in the system.", databaseName));
if (!database.IsOpen)
database.Open();
return database;
}
}