我是 DDD 的初学者,我尝试在 C# 中优雅地建模下一个场景:
一个基本上只有一个 name 属性和一个必须以特定顺序执行的项目列表的模板。
public class Template { public string Name { get; set; } public List<Item> Items { get; set; } } public class Item { public string Name { get; set; } public int Order { get; set; } }
一种称为 Profile 的类型。
public class Profile { public string Name { get; set; } }
profile 类的意思是说
- 我正在使用模板 A 来了解我有哪些物品以及按什么顺序
- 如果模板 A 发生更改,那么我将使用新版本,因为我不想保留列表模板 A 的克隆。
- 如果我被删除,则模板不会受到任何影响
- 如果我是创建的,那么我需要一个模板
- 我只能被我的名字照顾
这看起来像聚合根是模板,它有一个项目列表和一个配置文件列表。但是我觉得按配置文件的名称搜索要求我搜索所有具有给定名称的配置文件的模板。不知何故,来自 CRUD 背景,似乎要付出高昂的代价。此外,配置文件是使用模板的配置文件,并且让模板知道使用它的配置文件,这似乎是错误的。
你如何建模?这里的聚合根应该是什么?不止一个吗?如果您想从 UI 中使用它,您如何执行搜索?