DDDで新しいエンティティのデフォルトプロパティを設定するための最良の方法は何ですか?また、複雑なプロパティ(コレクションなど)のデフォルトの状態を設定するための最良の方法は何ですか?
私の考えでは、デフォルト値はビジネスルールの形式であり(「デフォルトでは、XをYとZにする」)、ドメインはビジネスを表すため、モデル自体に含める必要があります。このアプローチでは、モデル自体の静的な「GetNew()」メソッドが機能する可能性があります。
パブリッククラスPerson{ public string Name {get; セットする; } public DateTime DateOfBirth {get; セットする; } public bool IsAlive {get; セットする; } public List Limbs {get; セットする; } public static Person GetNew(){ 新しいPerson()を返す{ IsAlive = true、 Limbs = new List(){RightArm、LeftArm、RightLeg、LeftLeg} } } }
残念ながら、この場合、コレクションプロパティを別のリストのすべてのメンバーに設定する必要があります。このモデルは、リポジトリ/ DbContextから切り離されているため、すべてをロードする方法はありません。
安っぽい解決策は、パラメータとして渡すことです:
public static Person GetNew(List<Limb> allLimbs) {
return new Person() {
IsAlive = true,
Limbs = allLimbs
}
}
あるいは、単純なモデルプロパティと複雑なモデルプロパティのデフォルト値を設定するためのより良い方法はありますか?