Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在db4o中存储时间跨度_C#_Db4o - Fatal编程技术网

C# 在db4o中存储时间跨度

C# 在db4o中存储时间跨度,c#,db4o,C#,Db4o,我知道时间跨度是不可变的。 我有一个包含TimeSpan字段的对象。此字段经常更新。每次我更新数据库中的对象时,db4o都会更新TimeSpan字段。到目前为止,一切顺利。 但是旧的TimeSpan结构仍保留在数据库中,因此数据库不断增长。 如何防止db4o拯救其他人?我只需要此字段中当前保留的时间跨度 class Test { TimeSpan _totalRuntime; void Work() { DateTime start = DateTime.Now;

我知道时间跨度是不可变的。 我有一个包含TimeSpan字段的对象。此字段经常更新。每次我更新数据库中的对象时,db4o都会更新TimeSpan字段。到目前为止,一切顺利。
但是旧的TimeSpan结构仍保留在数据库中,因此数据库不断增长。 如何防止db4o拯救其他人?我只需要此字段中当前保留的时间跨度

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)

在更新使用“默认typehandler”的值类型时,db4o出现了一些问题(您可以将typehandler视为负责将对象封送到db4o可以存储的对象的代码段)

我们计划一有时间就解决这个问题。同时,我看到了至少两种可能的解决方法:

  • 存储TimeSpan.勾号(长)而不是TimeSpan本身,或
  • 为TimeSpan编写一个自定义的typehandler(难度更大,但并非不可能)
  • 附言:你可以通过上面的链接关注这个问题的进展

    最好的


    Adriano

    感谢Gamlor修复问题链接:)DateTimes和其他结构是否也受影响?因为我的数据库不断增长。只保存滴答声。