PersonオブジェクトをDB4Oに保存したい。[個人の場所]フィールドは、時間の経過とともに変更できます。そこで、DBから人を取得し、メソッドを呼び出して、場所フィールドを新しい場所オブジェクトに設定します。(Locationオブジェクト、つまりDDD値オブジェクトを不変にしたい)。
これは機能しますが、以前に割り当てられたLocationオブジェクトはデータベースのままです。これらの孤立したLocationオブジェクトを削除するように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...
}
編集:いくつかの詳細情報-PersonはDDD集約ルートであることが意図されています。したがって、人の内部状態への外部参照はありません。Personがその場所を更新すると、古い場所は存在しなくなります。