entity-framework – 在域驱动设计中为模型属性设置默认值的最佳实践?

前端之家收集整理的这篇文章主要介绍了entity-framework – 在域驱动设计中为模型属性设置默认值的最佳实践?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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
    }
}

或者,有一些更好的方法来设置简单和简单的默认值.复杂的模型属性

解决方法

这是 factory pattern in DDD的一个实例.它可以是专用类,如PersonFactory,也可以是静态方法,如示例所示.我更喜欢静态方法,因为我认为不需要创建一个全新的类.

至于初始化集合,我将使用集合作为参数的GetNew方法.它陈述了一个重要的约束 – 创建一个你需要该集合的新人实体.集合实例将由托管特定用例的应用程序服务提供.更一般地,默认值可以存储在数据库中,在这种情况下,应用程序服务将调用存储库以获取所需的值.

猜你在找的HTML相关文章