我需要向管理员列表发送一封电子邮件,作为对从 UI 发送的命令的响应。需要通知的管理员是从针对读取模型的查询中检索出来的。
目前 - 根据我的理解,我只有一个选择:在发送命令之前收集所需的管理员并将他们(名称/电子邮件对)添加到命令中。
或者 - 从命令处理程序跨越到读取模型是否可以接受?感觉不对,但我真的没有看到任何其他方式这样做?
我需要向管理员列表发送一封电子邮件,作为对从 UI 发送的命令的响应。需要通知的管理员是从针对读取模型的查询中检索出来的。
目前 - 根据我的理解,我只有一个选择:在发送命令之前收集所需的管理员并将他们(名称/电子邮件对)添加到命令中。
或者 - 从命令处理程序跨越到读取模型是否可以接受?感觉不对,但我真的没有看到任何其他方式这样做?
您根本无法从您的域访问读取模型,因为您的域是临时的,而不是您的读取模型。您需要有在命令执行时收到的电子邮件列表:)
您可以或在触发邮件的命令中包含管理员电子邮件列表,然后将其作为事件和时间持久化,或者您可以让您的域实体实例化其他将获取管理员电子邮件列表的域实体。
希望这有帮助。
你没有告诉任何关于你是如何实现命令端的。我通常在命令处理程序中提供这些信息。然后,我根据添加到命令中的 ID 在数据源中查询电子邮件和姓名。您不需要通过域模型来执行此操作。如果您在命令端没有可用的数据,我认为通过服务从读取端收集数据不会有什么大问题。我不会从域模型中这样做。
假设您的命令正在引发事件......
对我来说,解决这个问题的正确方法是有一个单独的事件处理程序来捕获命令的事件并触发电子邮件的发送。您的事件处理程序将查询现有的读取模型以获取管理员列表。
使事情变得简单,因为您的命令处理程序不需要意识到需要向管理员发送电子邮件。
您可以在概念上为此设置一个单独的系统,该系统还可以处理您的管理员创建/删除的事件,存储在特定的读取模型中纯粹是为了保存要发送电子邮件的管理员列表。