Yes, this is highlighting a fundamental issue with database generated ids. They violate the fundamental principal of an entity, which says that the identity of an entity should never change. The data can change, but the entity shall maintain the same id. With database generated ids you are running into these kinds of issues. You can't uniquely identify new entities, because you don't know the permanent id until you save them. What you should do in this case is after you saved, you should remove the UoW from the dictionary and add it back with the permanent id. This is commonly referred to as id fixup. DevForce does this with the entities in the cache. It fixes up their ids after a successful save.