Просто добавляем в 'Femaref' ответ и комментарии:
1) Да, вам нужна новая конфигурация для каждого соединения.
2) Открытие базы данных занимает некоторое время. db4o должен прочитать метаданные, проверить, завершены ли транзакции и т. д.
В общем случае не следует открывать и закрывать контейнер для каждой операции полностью. Это займет много времени, чтобы открыть и закрыть базу данных. Я предполагаю, что вы хотите использовать новый объектный контейнер для каждой операции, чтобы иметь транзакцию для каждой операции.
Рекомендую немного изменить реализацию. Откройте контейнер объекта при запуске приложения. И закройте его, когда вы закроете приложение. А затем используйте контейнеров сеансов для каждой операции. Это должно быть намного быстрее, так как db4o не нужен для всей работы по инициализации.
Как это:
// Open the container once for the life-time of your application
IObjectConainer rootContainer = Db4oEmbedded.OpenFile(......)
public IList<T> GetList<T>()
{
using (IObjectContainer db = rootContainer.Ext().OpenSession())
{
// As Femaref said, use to list to 'eagerly' load all data
return db.Query<T>(typeof(T)).ToList();
}
}