是否可以在db4o中使用内部提交时间戳查询自某段时间以来已更改的对象(因为版本8.0 db4o允许生成提交时间戳)?
我知道这可能是这样的:
long last = DateTime.Now.Ticks;
var objectsChanged = from obj in GetAllObjectsInDatabase(session)
where session.Ext().GetObjectInfo(obj).GetCommitTimestamp() > last
select obj;
但是对于10milion对象,迭代遍历所有对象需要很长时间(以获得3个对象) - 在每个对象上创建我自己的提交时间戳并将其编入索引要快得多。
从某个时刻起,是否有更快的方式来获取数据库中的更改?
答案 0 :(得分:1)
爪哇:
Query query = container.query();
query.descend(VirtualField.COMMIT_TIMESTAMP)
.constrain(lastCommitTimestamp).greater();
List<Object> result = query.execute();
所以在C#中它应该是:
IQuery query = container.Query();
query.Descend(VirtualField.COMMIT_TIMESTAMP)
.Constrain(lastCommitTimestamp).Greater();
IList result = query.execute();
无论如何,没有受助者。它不被视为公共API。但我认为非常接近你所需要的。