在db4o中存储TimeSpan

时间:2010-11-02 08:08:23

标签: c# db4o

我知道TimeSpan是不可改变的。 我有一个包含TimeSpan字段的对象。该字段经常更新。每次我更新db中的对象时,db4o都会更新TimeSpan字段。到目前为止,这么好 但旧的TimeSpan结构仍保留在db中,因此db会增长并增长。 如何防止db4o保存其他?我只需要目前在该领域持有的TimeSpan。

class Test {
    TimeSpan _totalRuntime;
    void Work() {
        DateTime start = DateTime.Now;
        _totalRuntime = _totalRuntime.Add(DateTime.Now - start);
    }
}

// Open the db
IObjectContainer db = Db4oEmbedded.OpenFile(ConfigDb4O(), _db4OFilename);

public static IEmbeddedConfiguration ConfigDb4O() {
    IEmbeddedConfiguration config = Db4oEmbedded.NewConfiguration();
    config.Common.Diagnostic.AddListener(new DiagnosticToConsole());
    return config;
}

db4o 7.12.132.14217(.NET20)

1 个答案:

答案 0 :(得分:2)

正如报告here更新使用“默认类型处理程序”的值类型时,db4o存在一些问题(您可以看到类型处理程序作为负责将对象封送到db4o可以存储的内容的代码段。)< / p>

我们计划在找到时间后立即解决这个问题。同时我看到至少2种可能的解决方法:

  1. 存储 TimeSpan.Ticks (长)而不是时间跨度,或
  2. 为TimeSpan编写自定义类型处理程序(更难,但并非不可能)。
  3. PS:您可以使用上面的链接关注此问题的进展。

    最佳

    阿德