2010-11-02 54 views
1

我知道TimeSpan是不可变的。 我有一个包含TimeSpan字段的对象。该字段经常更新。每次我更新db中的对象时,db4o都会更新TimeSpan字段。到现在为止还挺好。
但是旧的TimeSpan结构仍然存在于数据库中,因此db会增长并增长。 如何防止db4o保存其他人?我只需要目前在这个领域持有的TimeSpan。在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)

回答

2

据报道here db4o的更新使用“默认类型处理器”值类型时有一些问题(你可以看到一个类型处理器作为一块的收费代码将对象封送到db4o可以存储的东西)。

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

  1. 商店TimeSpan.Ticks(长)而不是时间跨度本身,或
  2. 写出时间跨度自定义类型处理器(困难,但不是不可能的)。

PS:您可以使用上面的链接关注此问题的进度。

最佳

阿德里亚诺

+0

感谢Gamlor用于固定链接问题:) – Vagaus 2010-11-02 14:49:00

+0

是否DateTime是否和其他结构也受到了影响?因为我的db增长和增长。只保存Ticks。 – chriszero 2010-11-12 12:30:31