DDD 意识到上下文之外的实体的存在?
DDD aware of existance of an entity outside the context?
在尝试学习 DDD 的过程中,我遇到了一个简单的问题。
我有一个聚合根助手。
那个助理可以管理治疗师。
所以我有:
var assistant = GetAssistant(Id);
var therapist = new Therapist("john@doe.com");
assistant.Manage(therapist);
repository.Save(assistant);
业务规则说,如果治疗师john@doe.com已经被任何助手管理,则不能添加。
但据我了解,助理不需要了解其他助理的治疗师。那么我怎样才能在 DDD 中做到这一点呢?
更新
治疗师是实体。
助手是实体。
助手必须是系统中的用户。
治疗师可能是系统中的用户。
治疗师有日程安排和创建约会等,但也可以有助手为 her/him 工作。
可以有一个助手作为用户管理其他治疗师(用户或非用户)。
所以进入系统是通过注册一个用户。
然后,您可以添加治疗师(您自己或其他人)
如果您添加另一位治疗师供您管理,我想确保:
a) Therapist 在系统中尚不存在。
我想我的 AR 完全错了。但是,如果我的用户是 AR,我将面临同样的问题,即用户如何才能知道系统中本不应知道的其他数据?
非常感谢你的帮助,我正在努力解决这个问题。
从执行的角度。您可以将代码写成:
var assistant = GetAssistant(Id);
var therapist = GetTherapist("john@doe.com");
therapist.ManagedBy(assistant);
repository.Save(therapist);
治疗师知道 he/she 是否由助手管理,因此此处应用规则。治疗师可以用锁来处理并发争用。
另一方面,治疗师可能还不存在。我认为这更像是一个 UI 便利问题(查找或创建问题)。
在尝试学习 DDD 的过程中,我遇到了一个简单的问题。 我有一个聚合根助手。 那个助理可以管理治疗师。
所以我有:
var assistant = GetAssistant(Id);
var therapist = new Therapist("john@doe.com");
assistant.Manage(therapist);
repository.Save(assistant);
业务规则说,如果治疗师john@doe.com已经被任何助手管理,则不能添加。
但据我了解,助理不需要了解其他助理的治疗师。那么我怎样才能在 DDD 中做到这一点呢?
更新 治疗师是实体。 助手是实体。
助手必须是系统中的用户。 治疗师可能是系统中的用户。
治疗师有日程安排和创建约会等,但也可以有助手为 her/him 工作。
可以有一个助手作为用户管理其他治疗师(用户或非用户)。
所以进入系统是通过注册一个用户。 然后,您可以添加治疗师(您自己或其他人) 如果您添加另一位治疗师供您管理,我想确保: a) Therapist 在系统中尚不存在。
我想我的 AR 完全错了。但是,如果我的用户是 AR,我将面临同样的问题,即用户如何才能知道系统中本不应知道的其他数据?
非常感谢你的帮助,我正在努力解决这个问题。
从执行的角度。您可以将代码写成:
var assistant = GetAssistant(Id);
var therapist = GetTherapist("john@doe.com");
therapist.ManagedBy(assistant);
repository.Save(therapist);
治疗师知道 he/she 是否由助手管理,因此此处应用规则。治疗师可以用锁来处理并发争用。
另一方面,治疗师可能还不存在。我认为这更像是一个 UI 便利问题(查找或创建问题)。