Я хочу сохранить объекты Person в DB4O. Поле «Место нахождения лица» может быть изменено с течением времени. Поэтому я извлекаю человека из БД и вызываю метод для установки поля местоположения на новый объект Location. (Я хочу, чтобы объекты местоположения были неизменяемыми, то есть объекты значения DDD).Предотвращение потерянных объектов в DB4O при обновлении полей
Это работает, однако ранее назначенные объекты местоположения остаются базой данных. Как я могу настроить DB4O для удаления этих объектов-сиротских объектов? Или мне нужен какой-то пользовательский процесс для сбора мусора?
Упрощенные классы для этого примера:
class Person {
Location location;
public void Move(Location newLocation) {
location = newLocation;
}
}
class Location {
public Location(string city) {
this.City = city;
//etc
}
public readonly string City;
/// more fields...
}
EDIT: Некоторые больше информации - Person предназначается, чтобы быть совокупный корень DDD. Таким образом, нет внешних ссылок на внутреннее состояние человека. Если Person обновляет свое местоположение, старое местоположение должно перестать существовать.
wtf is DDD dawg –