在 DDD 中为新实体设置默认属性的最佳方法是什么?此外,为复杂属性(例如集合)设置默认状态的最佳方法是什么?
我的感觉是默认值应该在模型本身中,因为它们是一种业务规则(“默认情况下,我们希望 X 是 Y 和 Z”),并且域代表业务。使用这种方法,模型本身的静态“GetNew()”方法可能会起作用:
公共类人{ 公共字符串名称 { 获取;放; } 公共日期时间 DateOfBirth { 得到;放; } 公共布尔 IsAlive { 获取;放; } 公共列表肢体{得到; 放; } 公共静态人GetNew(){ 返回新人(){ IsAlive = 真, 四肢 = new List() { RightArm, LeftArm, RightLeg, LeftLeg } } } }
不幸的是,在我们的例子中,我们需要将集合属性设置为另一个列表的所有成员,并且由于该模型与其 Repository/DbContext 分离,因此无法加载所有成员。
糟糕的解决方案是作为参数传递:
public static Person GetNew(List<Limb> allLimbs) {
return new Person() {
IsAlive = true,
Limbs = allLimbs
}
}
或者,是否有更好的方法为简单和复杂的模型属性设置默认值?