Я пытаюсь выяснить, как сохранить объект пригодным для использования между сеансами клиента в DB4O. Из того, что я понимаю, когда клиентский сеанс закрыт, объект больше не находится ни в одном кеше, и, несмотря на то, что у меня есть действительный UUID, я не могу вызвать Store, не вызывая вставку дубликата. Я искал способ вручную добавить его в кеш, но такого механизма нет. Повторное получение заставит меня скопировать все значения из теперь бесполезного объекта.
Вот вышеприведенный абзац в коде:
Person person = new Person() { FirstName = "Howdoyu", LastName = "Du" };
Db4oUUID uuid;
// Store the new person in one session
using (IObjectContainer client = server.OpenClient())
{
client.Store(person);
uuid = client.Ext().GetObjectInfo(person).GetUUID();
}
// Guy changed his name, it happens
person.FirstName = "Charlie";
using (var client = server.OpenClient())
{
// TODO: MISSING SOME WAY TO RE-USE UUID HERE
client.Store(person); // will create a new person, named charlie, instead of changing Mr. Du's first name
}
Последняя версия Eloquera поддерживает эти сценарии либо через атрибут [ID], либо через Store (uid, object).
Есть мысли?