Вы должны быть более точными в отношении "объекта". Если вы измените свойства экземпляра объекта, простое его сохранение приведет к обновлению:
MyClass someInstance = ObjectContainer.Query<MyClass>().FirstOrDefault();
someInstance.Name = "NewName";
someInstance.PhoneNumber = 12132434;
ObjectContainer.Store(someInstance); // This is the update call
[Это просто псевдокод]
Таким образом, вам не нужно сопоставлять объекты друг с другом, как это было бы при использовании СУБД.
Однако вам нужно убедиться, что вы не используете другой экземпляр ObjectContainer, потому что другой контейнер не будет знать, что эти объекты - один и тот же экземпляр (так как в них нет поля ID).
Архитектура вашего приложения должна помочь сделать это для большинства рабочих процессов, поэтому в действительности должен быть только один IObjectContainer
. Только если периоды времени действительно велики (например, вам нужно сохранить ссылку на объект в другой базе данных и обработать его каким-либо образом), он будет использовать UUID. Как вы уже указали, это требует хранения идентификатора где-то еще и, следовательно, усложняет вашу архитектуру.
Однако, если вы намереваетесь создать новый объект и «перезаписать» старый объект, все становится несколько сложнее из-за других объектов, которые могут ссылаться на него. Тем не менее, это патологический случай, который обычно следует обрабатывать в рамках самой модели предметной области, например копируя данные объекта из одного объекта в другой.