我正在考虑将现有的大型 VB6 系统的一部分转换为 .net。我正在尝试使用领域驱动设计,但我很难理解某些事情。
我完全难过的一件事是我应该如何处理复杂的 find 语句。例如,我们目前有一个屏幕显示已保存文档的列表,用户可以选择和打印、发送电子邮件、编辑或删除。我有一个 SavedDocument 对象,它可以完成所有操作,但它只有与它相关的属性,我需要显示文档所针对的客户名称和他们的电子邮件地址(如果有的话)。我还需要显示此文档可能来自的政策参考。Client 和 Policy 链接到 SavedDocument,但它们是它们自己的聚合根,因此不会同时加载 SavedDocument。
用户还可以指定几个过滤器来减少列表。这些可以来自存储在 SavedDocument 或 Client 和 Policy 上的属性。
我不确定如何从领域驱动设计的角度来处理这个问题。
- 我是否在存储库上有一个函数,它接受过滤器并向我返回一个 SavedDocuments 列表,然后我必须将其转换为不同的对象或 DTO,并填写额外的客户端和策略信息?这似乎有点慢,因为我必须使用多个调用加载所有细节。
- 我是否在存储库上有一个函数,它接受过滤器并返回一个 SavedDocumentsForList 对象列表,其中只包含我想要的信息?这似乎是最快的,但感觉不像我在使用 DDD。
- 我是否从他们的对象中加载所有内容并在服务中进行所有过滤和列选择?这似乎是最慢的,但也似乎非常面向领域。
我真的很困惑如何处理这些情况,而且我没有真正看到任何其他人对此提出问题,这掩盖了我觉得我错过了什么的感觉。