【发布时间】:2016-10-13 14:52:00
【问题描述】:
我目前正在开发一个应用程序,其中管理 Facilities 和 Facility Items 和 Assessments 和 Findings(这是一个带有 Windows 管理应用程序的移动应用程序,我只描述了一小部分)。
目前它是用一个贫血模型实现的非常 CRUD,我想应用 DDD 的一些想法来使我的模型更丰富/更健壮并强制执行一些不变量。
我喜欢实施的新要求是通过扫描附在它们上的Tag 来获取有关设施项目/发现的信息。
Team 拥有一组预定义的标签。目前这些是打印在磁性标签上的一些二维码,但当然也可以使用 nfc 标签。
当团队成员进行评估时,每当他发现发现时,他就会在“目标”上贴上标签并对其进行扫描。稍后其他团队成员可以扫描现有标签并获取有关发现的信息。如果某个结果不再相关,则该标签可能会重复用于其他结果。
这些是我的(简单)要求:
- 标签可以分配给设施或结果。
- 如果重新分配标签,旧的分配将不再有效。
- 可以使用标签查询设施项目/发现。
简单/明显的解决方案是直接从发现/设施项目中引用标签。但我认为这有一些缺点:
- 可能需要在一个事务中更改两个 AR,例如如果该标签以前用于调查结果,现在用于设施项目
- 我认为设施项目一定对标签一无所知。这不是它的真正属性,是吗?
- 我正在使用乐观锁定并更改“分配”也会更改查找/设施项目和拥有的 AR。我想这可能会导致并发问题。
我想我可以使用某种“标签分配”实体来引用标签和设施项目/发现。使用此解决方案,我可以轻松更改分配。这有意义吗? 但是这种解决方案至少存在一个问题:在 DDD 中“不允许”从标签中引用设施项目/发现(因为应该只引用 AR)。
我想知道有人会如何用 DDD 建模?有什么想法吗?谢谢!
【问题讨论】:
标签: c# oop domain-driven-design