2010-11-02 67 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