You can pass a defragmentation listener to the defragmentation process. This listener will be notified when there's no object for an id in the database. This means that a object has a reference to a non-existing object. This happens when you delete objects which are still referenced by other objects.
private class DefragmentListener : IDefragmentListener
{
public void NotifyDefragmentInfo(DefragmentInfo defragmentInfo)
{
Console.WriteLine(defragmentInfo);
}
}
Private Class DefragmentListener
Implements IDefragmentListener
Public Sub NotifyDefragmentInfo(ByVal defragmentInfo As DefragmentInfo) _
Implements IDefragmentListener.NotifyDefragmentInfo
Console.WriteLine(defragmentInfo)
End Sub
End Class
DefragmentConfig config = new DefragmentConfig("database.db4o");
Defragment.Defrag(config, new DefragmentListener());
Dim config As New DefragmentConfig("database.db4o")
Defragment.Defrag(config, New DefragmentListener())