We've faced some odb::object_already_persistent-exceptions when using the IncrementalIDGeneration. The fix was to load all entities before adding/manipulating anything else. My best guess is that the IncrementalIDGeneration creates IDs that are already taken by objects that were not loaded, though the generation should have everything it needs stored in PrefixAssignedIDs.