值对象的DDD嵌套

问题描述 投票:0回答:1

我要寻找的DDD建模和ValueObjects专门嵌套层次一些建议。

采取下面的代码,这是我的域名是如何开始形成的简单化样品。这是所有在我的合同约束方面,并已确定合同中的总根源。这确实让同领域专家基于感过讨论会,但我不知道如果我要对这个错误的方式。

我有这个嵌套的问题是:

1 - 我现在已经失去了创造简洁域事件,如TreatyDetailsCreated而是需要触发事件的水平之上,从而ContractCreated作为例子的能力。

2 - 我的命令又开始遵循这一类似的嵌套形式使他们失去清晰度

3 - 我现在强迫每个我需要更新一些深图中的时间来加载的合同,并且不需要这些价值较高的对象执行不变。

我的问题是我会得到更好的寻找到潜在的具有定义为aggreagtes我的第一级嵌套的对象吗?这样就解决了我的问题筑巢,让我夺回描述域中的事件。我不变量将只在在提交点的合同水平,使合同感觉就像一个逻辑容器比什么都被执行,将有可能被一个域服务内处理因复杂性。

public class CreateContractCommand
{
    public CreateTreatyDetails CreateTreatyDetails { get; set; }

}

public class CreateTreatyDetails
{
    public string Umr { get; set; }
}

public class Contract : Aggregate
{
    internal TreatyDetails TreatyDetails { get; private set; }

    private Contract() { }

    public static Contract Create(CreateContractCommand command)
    {
        var contract = new Contract {TreatyDetails = new TreatyDetails(command.CreateTreatyDetails)};

        //Raise domain events

        return contract;
    }
}

public class TreatyDetails : ValueObject
{
    //Additional properties removed for simplicity
    public Umr Umr { get; private set; }

    public TreatyDetails(CreateTreatyDetails createTreatyDetails)
    {
        Umr = new Umr(createTreatyDetails.Umr);
    }
}

public class Umr : ValueObject
{
    public string Value { get; private set; }

    public Umr(string value)
    {
        //Validate value

        Value = value;
    }
}
c# domain-driven-design cqrs event-sourcing value-objects
1个回答
0
投票

所以花了一些时间在这里通过搜索结果从“DDD”查询我的沃恩弗农跨越的文章跌跌撞撞这给了我指点,帮我继续我的旅程照看。

根据短文它已经证实了我的悬浮液,我应该有多个聚集的内容。因此,对于我的例子,我将有TreatyDetails和合同,其中合同都会有一个参考(TreatyDeatilsId)回来。

http://dddcommunity.org/library/vernon_2011/

© www.soinside.com 2019 - 2024. All rights reserved.