Несколько вопросов о работе с db4o

Попробуйте это:

host = `hostname`.strip # Get the hostname from the shell and removing trailing \n
puts host               # Output the hostname
18
задан Community 23 May 2017 в 11:56
поделиться

1 ответ

1) Как вы управляете идентификацией объекта при работе с объектами, хранящимися в db4o? В db4o у вас обычно нет идентификатора. db4o использует идентификатор объекта , чтобы различать объекты. Таким образом, один и тот же объект в памяти будет таким же объектом для базы данных.

Пока вы не сериализуете объект, это работает нормально. Однако, как только объекты сериализуются / отключаются, это больше не работает. Например, в веб-сценарии: вы отправляете данные в браузер. Теперь вам нужно позже снова идентифицировать объекты по некоторым идентификаторам.

Я думаю, что возможны три варианта: - Используйте внутренний идентификатор db4o . Однако этот идентификатор не вечен. Дефрагментация базы данных изменяет этот идентификатор. - Использование UUID db4o . Но UUID db4o довольно большие - Самостоятельное создание идентификаторов

2) Есть инструмент диспетчера объектов для просмотра базы данных. Однако в нынешнем состоянии он крайне ограничен. На мой взгляд, это огромный недостаток для db4o.

3) Вы можете создавать псевдонимы, переименовывать классы и поля и т.д. . Однако изменение иерархии наследования не работает. Затем вам нужно скопировать старые данные в новые экземпляры.

4) Да. Вы можете пометить поля как временные с помощью атрибута .NET-NonSerialized или настраиваемых атрибутов.

13
ответ дан 30 November 2019 в 09:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: