我们在项目中使用Db4o。
我有一些自动测试,其中测试对象的持久性。 问题是,我无法打开/创建数据库两次。 我有两个辅助方法来设置对象容器。但是当第二次调用该方法时,“ArgumentException:Configuration已经使用过”。被扔了。我关闭并处理了以前的物品容器。
我做错了什么?
CODE:
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;
}
答案 0 :(得分:1)
您正在使用已弃用的db4o方法。问题是Db4oFactory.Configure()返回一个静态配置对象;这种方法只是为了向后兼容。
如果您使用的是较新的db4o版本,请改用Db4oEmbedded.NewConfiguration()。否则(如果你真的需要坚持使用旧的db4o版本)使用Db4oFactory.NewConfiguration()也应该有效。