【问题标题】:Identity of an aggregate root聚合根的标识
【发布时间】:2014-05-20 09:39:08
【问题描述】:

我从 Evans 的书中了解到,聚合根是在域中唯一可识别的实体。

现在,我正在建模一个聚合根,它可以由一个由它的三个属性组成的字符串唯一标识 - “ProjectCode-Date-CollectionId”。

我可以将此字符串用作我的聚合根的身份键还是应该使用代理键?

如果我使用代理键,那么每次将新条目添加到数据库时,我都必须查询表以查看这三个属性的组合是否已经存在。这样可以吗?

【问题讨论】:

  • 我会避免使用这个伪密钥,因为它在域中没有意义。正确的方法是在域中强制执行唯一性,可以通过查询表以外的机制强制执行(唯一约束等 - 但这更多是实现细节)。

标签: entity-framework ef-code-first domain-driven-design aggregateroot


【解决方案1】:

不要将任何逻辑放入聚合根的标识符中, 并且 - 正如务实的建议 - ProjectCode-Date-CollectionId 组合的唯一性听起来像是域中的规则。 它可以以多种方式实现,也许作为域服务。

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    相关资源
    最近更新 更多