Bre*_*ill 7 domain-driven-design entity-framework default models
在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
}
}
Run Code Online (Sandbox Code Playgroud)
或者,是否有一些更好的方法来设置简单和复杂模型属性的默认值?
查看 Joshua Bloch 的《Effective Java》(第二版)中的静态构建器。在那里,你有一个静态构建器类,并且在构造之前链接调用来设置属性,因此它解决了要么拥有一个需要大量参数的构造函数,要么必须在每个属性上放置 setter 的问题(在这种情况下,你实际上有一个结构)。
| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |