私たちのプロジェクトでは Db4o を使用しています。
オブジェクトの永続性をテストする自動テストがいくつかあります。問題は、データベースを 2 回開いたり作成したりできないことです。オブジェクト コンテナーを取得するためのヘルパー メソッドが 2 つあります。しかし、メソッドが 2 回目に呼び出されると、「ArgumentException: 構成は既に使用されています。」投げられます。もちろん、以前のオブジェクトコンテナを閉じて破棄しました。
私は何を間違っていますか?
コード:
public static IObjectContainer GetEmptyTestingDatabase() {
var tempDir = Environment.GetFolderPath(Environment.SpecialFolder.InternetCache);
string dbFilePath = Path.Combine(tempDir, "UNIT-TESTING.db4o");
if (File.Exists(dbFilePath)) {
File.Delete(dbFilePath);
}
var cfg = Db4oFactory.Configure();
cfg.Add(new TransparentPersistenceSupport(new DeactivatingRollbackStrategy()));
cfg.Add(new TransparentActivationSupport());
var db = Db4oFactory.OpenFile(cfg, dbFilePath);
return db;
}
public static IObjectContainer GetMemoryDatabase() {
string dbFileName = Guid.NewGuid().ToString().ToString();
var cfg = Db4oFactory.Configure();
cfg.Storage = new Db4objects.Db4o.IO.PagingMemoryStorage();
cfg.Add(new TransparentPersistenceSupport(new DeactivatingRollbackStrategy()));
cfg.Add(new TransparentActivationSupport());
var db = Db4oFactory.OpenFile(cfg, dbFileName);
return db;
}