C# 具有大量子集合的聚合根的设计
我开始了一个新项目(重写现有的解决方案),并希望使用和探索DDD。在设计领域模型的过程中,一开始很难忽略实体框架。它对于只有小的子集合或仅基于CRUD的较小集合非常有效。现在我到了一个地步,我有一个集合了大量收藏的集合,我对此非常着迷 域概览C# 具有大量子集合的聚合根的设计,c#,entity-framework,domain-driven-design,C#,Entity Framework,Domain Driven Design,我开始了一个新项目(重写现有的解决方案),并希望使用和探索DDD。在设计领域模型的过程中,一开始很难忽略实体框架。它对于只有小的子集合或仅基于CRUD的较小集合非常有效。现在我到了一个地步,我有一个集合了大量收藏的集合,我对此非常着迷 域概览 在我的域模型中,有一个名为的协议(聚合根) 协议的子项称为协议条目 协议条目具有特定类型(默认、每月和每年)。就目前而言,除了知道它们是什么类型之外,没有其他要求了——它们都是相同的,行为相同,但可能有不同的类型(请继续阅读以了解原因) 现在,在这个月内
- 在我的域模型中,有一个名为的协议(聚合根)
- 协议的子项称为协议条目李>
- 协议条目具有特定类型(默认、每月和每年)。就目前而言,除了知道它们是什么类型之外,没有其他要求了——它们都是相同的,行为相同,但可能有不同的类型(请继续阅读以了解原因)
- 现在,在这个月内,有几个协议条目添加到特定的协议中(类型:默认值)。无法设置或定义协议条目的日期(时间)——它是用“现在”添加/创建的
- 在每个月底(12月除外,见下一页),要求在再次添加任何其他协议条目之前,创建/添加协议条目(类型:每月)
- 在每年的年底,有一项要求,即创建/添加一个协议条目(类型:年度),然后再添加任何其他协议条目。年底时,不需要每月输入,因为已经有了年度输入
很抱歉问了这么长的问题,这可能不是一个完美的标题(我不知道如何用几句话来概括)。我是DDD的新手,这个问题让我发疯,如果不是所有的事情都是完全正确的,我也很抱歉——我还在学习。提前感谢大家花时间关心和思考我的问题 如果你想与很多孩子一起工作,请查看沃恩·弗农的工作,尤其是他在日历和日历条目方面的工作。它是Java语言,但看起来与您非常相似: 请注意关系是如何建立的,Calendar从不拥有任何CalendarEntry,而是CalendarEntry引用CalendarId 当您处理日历或CalendarEntry时,应用程序服务负责加载要处理的集合、使对象交互并持久化它们。这样,您就可以更好地控制粒度,如果您只需要当前月份的条目子集,就不需要加载完整的聚合,从而提高性能和内存占用 请记住DDD是关于定制的 因此,在存储库中,您可能有以下方法:
- 当前月份的(负载)入口
- 下个月的(装载)进料口