我想将 Person 对象存储在 DB4O 中。人员位置字段可以随时间更改。所以我从数据库中检索一个人并调用一个方法来将位置字段设置为一个新的位置对象。(我希望 Location 对象是不可变的,即 DDD 值对象)。
这可行,但是先前分配的 Location 对象仍保留在数据库中。如何配置 DB4O 以除去这些孤立的 Location 对象?还是我需要一些自定义过程来进行垃圾收集?
此示例的简化类:
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...
}
编辑:更多信息 - Person 是一个 DDD 聚合根。因此,没有对一个人的内部状态的外部引用。如果 Person 更新了它的位置,那么旧的位置应该不复存在。