在DDD中为新实体设置默认属性的最佳方法是什么?另外,为复杂属性(例如集合)设置默认状态的最佳方法是什么?
我的感觉是默认值应该在模型中,因为它们是业务规则的一种形式(“默认情况下,我们希望X是Y& Z”),域代表业务.使用这种方法,模型本身的静态“GetNew()”方法可能会起作用:
public class Person { public string Name { get; set; } public DateTime DateOfBirth { get; set; } public bool IsAlive { get; set; } public List Limbs { get; set; } public static Person GetNew() { return new Person() { IsAlive = true,Limbs = new List() { RightArm,LeftArm,RightLeg,LeftLeg } } } }
不幸的是,在我们的例子中,我们需要将collection属性设置为另一个列表的所有成员,并且由于此模型与其Repository / DbContext分离,因此它没有任何方法可以将它们全部加载.
Crappy解决方案将作为参数传递:
public static Person GetNew(List<Limb> allLimbs) { return new Person() { IsAlive = true,Limbs = allLimbs } }